C# 返回带有asp.net核心api错误的自定义对象
我使用的是asp.net core 2.1,在api中返回错误时,我需要模拟一些现有行为,其中响应包括自定义对象:C# 返回带有asp.net核心api错误的自定义对象,c#,asp.net-core,C#,Asp.net Core,我使用的是asp.net core 2.1,在api中返回错误时,我需要模拟一些现有行为,其中响应包括自定义对象: return this.BadRequest( new ApiError { // The corresponding integer response code. Status = StatusCodes.Status400BadRequest, // The matching short text code.
return this.BadRequest(
new ApiError
{
// The corresponding integer response code.
Status = StatusCodes.Status400BadRequest,
// The matching short text code.
Code = "BadRequest",
// A detailed context specific message.
Message = "Some message"
});
我的问题是,asp.net core带来了Microsoft.AspNetCore.Http.StatusCodes
类,该类包含指示响应代码的整数字段,但是字段名不是我想公开的内容,例如code=nameof(StatusCodes.Status400BadRequest)
在这种情况下,生成响应描述BadRequest
的现代方法是什么
我可以使用System.Net.HttpStatusCode.BadRequest
和nameof(System.Net.HttpStatusCode.BadRequest)
,但这似乎忽略了较新的约定
我不想转换返回类型,控制器和动作签名已经定义得很好了。我想确保我正在使用一种简洁的方法来适应现有的消费者,他们希望对象具有所需的字段,如果可能的话,我希望这样做时不需要使用魔术字符串或多个不相关的类
我认为这个用例比没有更常见,并且有更复杂的工具来实现这一点?当HTTP状态代码告诉您时,为什么有一个属性显示400个错误请求会很常见?您的意思还不完全清楚。
BadRequest
功能可适当设置状态代码和状态文本。微软转向StatusCodes
的原因正是为了摆脱这种硬编码方式。现在每个人都想知道如何硬编码这样的东西:)。您也可以在HttpStatusCode
上调用ToString
。请参阅@CamiloTerevinto,上面的评论回答了您的第一个评论。我需要一个对象,而不是实现所描述的字段,这在语义上与响应代码不同。使用者代码中的处理程序利用对象的属性。我正在寻找一种简洁的方式来适应它。我没有试图将HttpResponseMessage
转换为IActionResult
,这是不相关的。@HereticMonkey我看得越多,我继续得出相同的结论。我将研究如何在消费代码中适应本机功能。