2017-05-31 10 views
0

RESTfulなデザインであるかどうかにかかわらず、私は200 OK StatusCodeで以下のように結果を出したいと思います。 1以上OK(200)コードのCreatedAtRoute

return CreatedAtRoute("DefaultApi", new { id = model.Id }, model); 

id経路変数とJSONシリアライズmodelコンテンツ所与利用Locationヘッダを提供します。

return Ok(); // how to make it with this? 

私はASP.NET WebApi2(.Net 4.6)テンプレートを使用しています。これについて

答えて

0

何、CreatedAtRouteNegotiatedContentResultを飾ると、ステータスコード更新カスタムIHttpActionResult作成します。その後、

public class OkWithLocation<T> : IHttpActionResult 
{ 
    private readonly CreatedAtRouteNegotiatedContentResult<T> _result; 

    public OkWithLocation(CreatedAtRouteNegotiatedContentResult<T> result) 
    { 
     _result = result; 
    } 

    public async Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken) 
    { 
     var response = await _result.ExecuteAsync(cancellationToken).ConfigureAwait(false); 
     response.StatusCode = HttpStatusCode.OK; 
     return response; 
    } 
} 

そして、あなたのコントローラのアクションでこれを使用します。

return new OkWithLocation<Model>(CreatedAtRoute("DefaultApi", new { id = model.Id }, model)); 

かもしれないきれいなのが、それは仕事を終わらせる。

+0

ニースとクリーン。ありがとう – Youngjae