繁体   English   中英

如何在 IHttpActionResult 的响应正文中添加“代码”返回 BadRequest(Message)

[英]How to add "code" in Response Body of IHttpActionResult return BadRequest(Message)

我返回 BadRequest("Failed Invalid Product Id"),它返回响应代码 400 和响应正文

{
    "error": {
    "code": "",
    "message": "Failed Invalid Product Id"
     }
}

如何在响应正文中发送响应代码 400 以便我得到响应正文,例如:

{
    "error": {
    "code": 400,
    "message": "Failed Invalid Product Id"
     }
}

你可以做这样的事情,而不用测试它:

return Content((HttpStatusCode)400, "Failed Invalid Product Id");

如果您真的想要定制的方式来做到这一点,那么您需要使用您自己的类来扩展IHttpActionResult实现,例如以下示例,其灵感来自此链接

public class ErrorResult : IHttpActionResult
{
    private readonly Error _error;
    private readonly HttpRequestMessage _request;

    public ErrorResult(Error error, HttpRequestMessage request)
    {
        _error = error;
        _request = request;
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
        var err = new Error()
        {
            Code = _error.Code,
            Message = _error.Message
        };

        var response = new HttpResponseMessage(HttpStatusCode.BadRequest)
        {
            Content = new ObjectContent<Error>(err, new JsonMediaTypeFormatter()),
            RequestMessage = _request
        };
        return Task.FromResult(response);
    }
}

public class Error
{
    public string Code { get; set; }
    public string Message { get; set; }
}

然后使用它:

var err = new Error()
{
    Code = "400",
    Message = "Failed Invalid Product Id"
};

return new ErrorResult(err, Request);

这将错误返回:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM