はい、可能です。既定の構成のままの状態で、searchTerm
をクエリ文字列パラメータとして渡していると仮定して、動作する必要があります。しかし、たとえば/api/myurl/blah
のようにURLの一部としてURLを渡そうとすると、デフォルトの経路指定ルーティングでは、メソッドのint
バージョンと一致してエラーが返されます。デフォルト設定を編集するか、Attribute Routingを使用する必要があります。
一般に、WebApiではあまり有用でないため、通常は無効にしてAttribute Routingを使用します。
あなたWEBAPIの設定に
config.MapHttpAttributeRoutes();
を追加し、ルーティング属性を有効にします。
は、その後、あなたが
/api/myobject?searchTerm=blah
と
/api/myobject/1
と、彼らはshouldnを介して第2を介して第一の方法を呼び出すことができ、今な
[HttpGet]
[Route("api/myobject/")]
public HttpResponseMessage GetSearchResults(string searchTerm)
{
HttpResponseMessage response;
//Do Work
return response;
}
[HttpGet]
[Route("api/myobject/{id:int}")]
public HttpResponseMessage Get(int id)
{
HttpResponseMessage response;
//Do Work
return response;
}
としてあなたの方法をマークアップすることができます衝突しない。あなたはsearchTerm
が代わりにクエリパラメータのURLであることがしたい場合は
しかし、あなたはすべてのIDをキャッチします
[Route("api/myobject/{searchTerm}")]
api/myobject/{id:int}
ルートにルートを変更することができますし、api/myobject/{searchTerm}
がキャッチします最も他に何か。ただし、URLがURLエンコードされていない場合、奇妙なことが起きやすいように注意してください。
あなたが探しているURLの形式が正確にわからないので、私が提供したものは単なる例に過ぎません。先に投稿したlinkは、属性ルーティングの詳細を解説しています。これにより、WebApiがMVCから継承した慣例によるルーティングよりも複雑なルートを作成することができます。
優秀な説明 - 経路指定ルーティングが完璧に機能しました! – Aaron
問題ありません。それが助けてくれてうれしい。 –