web-dev-qa-db-ja.com

IHttpActionResultを使用してCreated-201応答をコーディングする方法

IHttpActionResultを使用してCreated-201応答をコーディングするにはどうすればよいですか?

IHttpActionResultにはこれらのオプションしかありません

  • Ok
  • リストアイテム
  • 見つかりません
  • 例外
  • 無許可
  • 要求の形式が正しくありません
  • 競合リダイレクト
  • InvalidModelState

私が今やっていることは以下のこのコードですが、IHttpActionResultではなくHttpResponseMessageを使用したいと思います

 public IHttpActionResult Post(TaskBase model)
        {
           HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, model);
          response.Headers.Add("Id", model.Id.ToString());
          return ResponseMessage(response);
         }
15
Devsined

ビューがApiControllerから派生している場合、基本クラスからCreatedメソッドを呼び出して、そのような応答を作成できるはずです。

サンプル:

[Route("")]
public async Task<IHttpActionResult> PostView(Guid taskId, [FromBody]View view)
{
    // ... Code here to save the view

    return Created(new Uri(Url.Link(ViewRouteName, new { taskId = taskId, id = view.Id })), view);
}
15
Gildor
return Content(HttpStatusCode.Created, "Message");

コンテンツがNegotiatedContentResultを返しています。 NegotiatedContentResultはIHttpActionResultを実装します。

enter image description here

enter image description here

同様の問題:メッセージとともにNotFoundを送信したい場合。

return Content(HttpStatusCode.NotFound, "Message");

または:

return Content(HttpStatusCode.Created, Class object);
return Content(HttpStatusCode.NotFound, Class object);
5
miragessee