web-dev-qa-db-ja.com

ASP.NET Core WebApi HttpResponseMessageはカスタムメッセージを作成しますか?

ASP.NET Core Web APIでカスタムメッセージを作成するにはどうすればよいですか?例えば帰りたい

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

new HttpResponseMessage()
{ 
    StatusCode=HttpStatusCode.NotFound,
    Message="Sorry !!"
};
7
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
     };
_

これら2つのメソッドは少し異なります。ContentResultは常にContentTypeの_text/plain_を持ちます

Ok()メソッドとNotFound()メソッドはObjectResultを返します。これは、フォーマッターを使用して、リクエストのAcceptヘッダーのコンテンツタイプに従って文字列をシリアル化します。

8
Jared Kells

レガシーHttpResponseMessageを返すには、.netコアでResponseMessageResultに変換する必要があります。以下に例を示します。

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

        return new ResponseMessageResult(responseMessage);
    }
3
Yang Zhang