public HttpResponseMessage PostProduct(Product item)
{
//creates and adds an item to repository(db)
item = repository.Add(item);
//creates a new httpresponse
var response = Request.CreateResponse(HttpStatusCode.Created, item);
//creates new uri
string uri = Url.RouteUrl("DefaultApi", new { id = item.Id });
//set header for new uri
response.Headers.Location = new Uri(uri);
return response;
}
この行は新しい RouteUrl を作成します -> 基本的には応答ヘッダーへのリンクです。
私のアドバイスは、ここから公式ドキュメントから始めることです: http://www.asp.net/web-api、それは私にとってはうまくいきました。ここで調査すべきことがたくさんあります: http://geekswithblogs.net/JoshReuben/archive/2012/10/28/aspnet-webapi-rest-guidance.aspx
この回答に投稿するには例が多すぎるため、役立つ場合があります。
· 応答コード: デフォルトでは、Web API フレームワークは応答ステータス コードを 200 (OK) に設定します。しかし、HTTP/1.1 プロトコルによれば、POST 要求の結果としてリソースが作成された場合、サーバーはステータス 201 (Created) で応答する必要があります。非 Get メソッドは HttpResponseMessage を返す必要があります
· Location: サーバーがリソースを作成するとき、応答の Location ヘッダーに新しいリソースの URI を含める必要があります。
public HttpResponseMessage PostProduct(Product item)
{
item = repository.Add(item);
var response = Request.CreateResponse<Product>(HttpStatusCode.Created, item);
string uri = Url.Link("DefaultApi", new { id = item.Id });
response.Headers.Location = new Uri(uri);
return response;
}