Как добавить «код» в тело ответа IHttpActionResult вернуть BadRequest (сообщение) - PullRequest
1 голос
/ 25 апреля 2019

Я возвращаю BadRequest («Неправильный неверный идентификатор продукта»), который возвращает мне код ответа 400 и тело ответа

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

Как я могу отправить код ответа 400 в теле ответа, чтобы я получил тело ответа, например:

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

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете сделать что-то вроде этого, не тестируя его:

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);

Будет возвращена ошибка:

enter image description here

...