it-roy-ru.com

ASP.NET Core WebApi HttpResponseMessage создать собственное сообщение?

Как создать собственное сообщение в ASP.NET Core WebApi? Например, я хочу вернуться

new HttpResponseMessage()
{
    StatusCode=HttpStatusCode.OK,
    Message="Congratulations !!"
};

new HttpResponseMessage()
{ 
    StatusCode=HttpStatusCode.NotFound,
    Message="Sorry !!"
};
3
jump4791

Этот самый простой метод заключается в использовании помощников из базового класса Controller.

public ActionResult ExampleNotFound()
{
    return NotFound("Sorry !!");            
}

public ActionResult ExampleOk()
{
    return Ok("Congratulations !!");
}

В качестве альтернативы вы можете вернуть новый ContentResult и установить его код состояния.

return new ContentResult
     {
         Content = "Congratulations !!",
         ContentType = "text/plain",
         StatusCode = 200
     };

Эти два метода немного отличаются, ContentResult всегда будет иметь ContentType из text/plain

Методы Ok() и NotFound() возвращают переменную ObjectResult, которая использует средство форматирования для сериализации вашей строки в соответствии с типами содержимого в заголовке Accept из запроса.

7
Jared Kells

Чтобы вернуть устаревшую HttpResponseMessage, вам необходимо преобразовать ее в ResponseMessageResult в ядре .net. Ниже приведен пример. 

    public async Task<IActionResult> Get(Guid id)
    {
        var responseMessage = HttpContext.GetHttpRequestMessage().CreateResponse(HttpStatusCode.OK,
            new YourObject()
            {
                Id = Id,
                Name = Name
            });

        return new ResponseMessageResult(responseMessage);
    }
0
Yang Zhang