HEllo这是一些mvc4 webapi代码,任何人都可以在这里解释我的每一行代码..我用谷歌搜索但没有找到任何有趣的东西
public HttpResponseMessage PostProduct(Product item)
{
item = repository.Add(item);
var response = Request.CreateResponse(HttpStatusCode.Created, item);
string uri = Url.RouteUrl("DefaultApi", new { id = item.Id });
response.Headers.Location = new Uri(uri);
return response;
}
我只知道我正在发送产品项目..作为回报,这个web api返回我对新添加产品的回复但我并不理解这两行特别是
string uri = Url.RouteUrl("DefaultApi", new { id = item.Id });
response.Headers.Location = new Uri(uri);
答案 0 :(得分:4)
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(已创建)。非Get方法应该返回 HttpResponseMessage
·位置:当服务器创建资源时,它应该包含 响应的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; }
答案 1 :(得分:2)
public HttpResponseMessage PostProduct(Product item)
//this means that any post request to this controller will hit this action method
{
item = repository.Add(item);
//the posted data would be added to the already defined repository
var response = Request.CreateResponse(HttpStatusCode.Created, item);
//a responses is created with code 201. which means a new resource was created.
string uri = Url.RouteUrl("DefaultApi", new { id = item.Id });
//you get a new url which points to the route names DefaultAPI and provides a url parameter id(normally defined as optional)
response.Headers.Location = new Uri(uri);
//adds the created url to the headers to the response
return response;
//returns the response
}
通常作为标准,POST请求用于创建实体。并且要在该实体中放入的数据随请求一起发送。
所以这里的代码是创建实体,然后在响应中发回可以找到最近创建的实体的URL。这是任何客户都期望谁遵循标准。虽然这完全没必要。
因此,您必须拥有一个GET
操作方法,该方法接受id
作为参数,并返回与product
对应的id