2017-06-09 4 views
1

私はweb apiで新しく、私も非常に高度な開発者ではありません。私は、単一のアクションに対して複数のhttp動詞を使用する方法を示す記事を見てきました。WebAPI:シングルアクションで複数のhttp動詞を使用できます

私はアプローチが良いことを知りたいです。さもなければ、誰かが単一のアクションのために複数のhttp動詞を使用するときに悪化するものは何ですか?彼らは人々を混乱させることが単一のアクションに対して複数のルートを作成するため、単一のアクションに対して複数のHTTP動詞を使用するシナリオ人々の種類では、このエリアhttps://www.codeproject.com/Articles/1005485/RESTful-Day-sharp-Security-in-Web-APIs-Basic#_Toc423441907

[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) 
{ } 

1)から取られた

コード.... ...下に近づくべきかどうかは良いですか?

[GET("productid/{id?}")] 
[GET("particularproduct/{id?}")] 
[GET("myproduct/{id:range(1, 3)}")] 
public HttpResponseMessage Get(int id) 
{} 

2)PUTとDELETEは異なる動詞です。どのように単一の行動のために異なる動詞を使用することができます....それは正しいアプローチです。

[DELETE("remove/productid/{id}")] 
[DELETE("clear/productid/{id}")] 
[PUT("delete/productid/{id}")] 
public bool Delete(int id) 
{ 
if (id > 0) 
    return _productServices.DeleteProduct(id); 
return false; 
} 

上記のコードの賛否両論を明確にして詳細を確認してください。ありがとう

+0

1)複数の動詞はありません(すべて同じですが複数のルート)2)APIの開発者および/または契約によって異なります。それは間違っているか間違っている可能性があります –

+0

記事の要点は、可能なことを示すことです。あなたは、開発者として、それを使うかどうかを決める必要があります。 –

+0

@SirRufo複数のhttp動詞DELETEとPUTを使用して、削除と呼ばれる単一のアクションを使用することを確認してください –

答えて

0
  1. これは、アプリケーションの設計と、アプリケーションのルーティング方法と関連があります。たとえば、particularproduct/{id?}はいずれかの製品を取得し、myproduct/{id:range(1, 3)は自分の製品を1つ取得することを意味し、各ユーザーは最大3つの製品のみを持つことができます(そのため、範囲制限があります)。

  2. PUT、DELETEには副作用、すなわちデータの変更があります。アクションメソッドDelete(..)のPOSTを使用することもできます。状況によっては、PUT & DELETEがサポートされない場合があります(Are the PUT, DELETE, HEAD, etc methods available in most web browsers?)ので、代わりにPOSTを使用する必要があります。

また、アプリのデザインにもよりますが、複数のURIを使用すると、さまざまなシナリオで使用することができます。ほとんどの場合、各アクションメソッドに1つのURIを使用します。

+0

別のhttp動詞を単一のアクションで使用する方法を教えてください。そこにPUTがあり、DELETEがアクションの削除に使用されています.....正しいコードですか、それともすべてのアプローチが良いですか? –

+0

Get()というアクションのサンプルアドレスを教えてください。 –

+0

@MonojitSarkar私は私の答えを編集しました、そして私はそれがより明確であることを願っています – grepLines

関連する問題