2016-10-13 15 views
1

私はRESTサービスを持っており、2つの削除メソッドが必要です。各メソッドは1つのIDしか必要としません。RESTサービスのリソースを削除するために同じ符号を持つ2つのメソッドを持つ方法

第一の方法は、多くの要素を削除します。

[HttpDelete] 
public IHttpActionResult DeleteNPs(int countryId) 
{ 
    ... 
    return Ok(); 
} 

第2の方法は、ただ一つの要素を削除:あなたは符号が同じであるが、その効果は完全で見ることができるように

[HttpDelete] 
public IHttpActionResult DeleteNP(int npId) 
{ 
    ... 
    return Ok(); 
} 

を異なる。私はこのような2つのパラメータと第二の方法を作成するために考えていた:

[HttpDelete] 
public IHttpActionResult DeleteNPs(int countryId, int npId) 
{ 
    ... 
    return Ok(); 
} 

しかし、これは本当に悪い回避策です...と私は後者の場合で国IDを持っているでもありません。どのようにRESTのパラダイムで次のような状況を管理する必要がありますか?

あなたは

+1

それぞれの方法で異なるパスを使用するのはなぜですか? – yelliver

+0

あなたはそれぞれの方法に2つの異なる経路を持つべきであることを意味しますか?これはRESTサービスの正しいアプローチですか? – Ciccio

+1

@Ciccio「正しく実装する」というあなたの感覚を克服する「正しいアプローチ」はしないでください。 – Kamo

答えて

1

IMHO実際にいくつかのREST標準に頼っていると、デザインに何か問題があります。

通常は、以下の必要があると思います方法:

[HttpDelete] 
public IHttpActionResult DeleteNPs() 
{ 
    ... 
    return Ok(); 
} 

[HttpDelete] 
public IHttpActionResult DeleteNP(int npId) 
{ 
    ... 
    return Ok(); 
} 

あなたはパラメータを紹介したい場合、あなたは別の方法を導入する必要があります

[HttpDelete] 
public IHttpActionResult DeleteNPsByCountryId(int countryId) 
{ 
    ... 
    return Ok(); 
} 

をして、例えば添付次のルート:あなたのAPIが曖昧作っている他のケースで

  • DELETE /api/np
  • DELETE /api/np/1
  • DELETE /api/np/country/1

+0

ルーティングの問題を解決しました。 – Ciccio

+1

@Ciccio - なんとか - はい。この種のアクションのサブコントローラーを作成することはできますが、最後には適切に処理するための子ルートを作成する必要があります。 – Kamo

0

私はあなたが誰かが「」間違ったメソッドを呼び出すことを心配している思いありがとう!

もしそうならば、私はという妥当な答えがあると思います:これら2つの方法の名前を変更してください!

DeleteNPsForCountry(country) 

DeleteNPsById(np) 

同様

二つのことは、単に最初の場所でそれらに同じ名前を与えないよう異なる動作をした場合! 特にがある場合いいえ他の保護の平均 - あなたの現在の方法は非常に同じ名前を持ち、どちらもintをとります。だからそこから始めよう。回避策を探す代わりに!

そして、もちろん、クライアントにはでもは別のパスを使ってそれらを提示します!

+0

申し訳ありませんが、2番目のメソッドの名前が大変残念です...もちろん、2つのメソッドの名前は同じですが、そうでなければ私のプログラムもコンパイルされませんでした。 次にRESTサービスです私は名前でメソッドを呼び出すのではありませんが、Http動詞は差別的な要素です – Ciccio

+0

しかし、まだいくつかのレベルは、実際のメソッドに、受信URLを要求してマッピングされていますか? – GhostCat

+0

私はあなたを理解しているかどうかはわかりません... http動詞だけでマッピングが行われていると思います... – Ciccio

関連する問題