我是web api的新手,我也不是一个非常先进的开发人员。我看过一篇文章,展示了我们如何使用多个http动词进行单一操作。
所以我想知道这种方法很好。否则,当有人使用多个http动词进行单个动作时会出现什么情况呢?
fl.jl:4 | m
1)在什么样的情况下,人们使用多个http动词进行单个动作,因为它们为单个动作创建了多个路径,可能会让人感到困惑.......应该接近以下是好还是不好?
[GET("allproducts")]
[GET("all")]
public HttpResponseMessage Get()
{ }
[GET("productid/{id?}")]
[GET("particularproduct/{id?}")]
[GET("myproduct/{id:range(1, 3)}")]
public HttpResponseMessage Get(int id)
{ }
[POST("Create")]
[POST("Register")]
public int Post([FromBody] ProductEntity productEntity)
{ }
[PUT("Update/productid/{id}")]
[PUT("Modify/productid/{id}")]
public bool Put(int id, [FromBody] ProductEntity productEntity)
{ }
// DELETE api/product/5
[DELETE("remove/productid/{id}")]
[DELETE("clear/productid/{id}")]
[PUT("delete/productid/{id}")]
public bool Delete(int id)
{ }
2)PUT和DELETE是不同的动词。如何使用不同的动词进行单一动作....这是正确的方法。
[GET("productid/{id?}")]
[GET("particularproduct/{id?}")]
[GET("myproduct/{id:range(1, 3)}")]
public HttpResponseMessage Get(int id)
{}
请详细说明上述代码和方法的优点和含义。感谢
答案 0 :(得分:0)
这更多地与您的应用程序的设计以及您希望如何路由应用程序有关。例如,particularproduct/{id?}
用于获取任何产品之一,而myproduct/{id:range(1, 3)
表示获取我的某个产品,而每个人最多只能有3个产品(这就是为什么有一个范围的原因)限制)。
[GET("productid/{id?}")]
[GET("particularproduct/{id?}")]
[GET("myproduct/{id:range(1, 3)}")]
public HttpResponseMessage Get(int id){}
PUT,DELETE都有副作用,即数据更改。您甚至可以使用POST来Delete(..)
操作方法。在某些情况下,PUT&可能不支持DELETE(Are the PUT, DELETE, HEAD, etc methods available in most web browsers?),因此您必须使用POST。
因此,它再次取决于您的应用程序的设计,并且拥有多个URI允许您在不同的场景中使用它。大多数时候,我只为每个动作方法使用一个URI。