1

次のように、Web API コントローラーに 2 つのメソッドがあります。

public samplecontroller: webapicontroller
{

     [HttpPost]    
     public void PostMethod()

     [HttpGet]
     public void GetValues(int a,int b)
}

私はglobal.asaxに次のものを持っています:

 routes.MapHttpRoute

 ("Default API Route", "api/{controller}/{id1}/{id2}/{id3}/{id4}/{id5}", 

  new { id1 = UrlParameter.Optional, id2 = UrlParameter.Optional, id3 = UrlParameter.Optional, id4 = UrlParameter.Optional, id5 = UrlParameter.Optional });

2 番目のメソッド、つまり を呼び出したい場合、GetValues(int a,int b)次のように Global.asax に HttpRoute をもう 1 つ記述できますか?

routes.MapHttpRoute(
     name: "ActionApi",
     routeTemplate: "api/{Sample}/{GetValues}/{a}/{b}",
     defaults: new { a = UrlParameter.Optional, b=UrlParameter.Optional }
);

global.asax で複数の maproute を作成できますか?

また、オプションのパラメータを指定するには、a や b などのパラメータと同じものを指定する必要がありますか?

4

1 に答える 1

0

global.asaxには複数のルートを含めることができます。各着信リクエストは、一致する最初のルートに移動します。つまり、より具体的なものが最初に行く必要があります。次の場合、URLはルートと一致します。

  1. とルートの値が定義されていますcontrolleraction
  2. 必要なすべてのルート値(ルートの中括弧内の値と、アクション内のnull許容でないパラメーターの両方)が定義されています。

とはいえ、提案されたルートapi / {Sample} / {GetValues} / {a}/{b}は意味がありません。2つの新しい(意味のない)ルート値Sampleとを作成し、定義またはGetValuesを提供しません。私はあなたが書くつもりだったのはこれだと思います:controlleraction

routeTemplate: "api/Sample/GetValues/{a}/{b}",
defaults: new { controller: "Sample", action: "GetValues", a = UrlParameter.Optional ,b=UrlParameter.Optional }

これにより、URI/api/Sample/GetValues/1/2がアクションに一致します。

routeTemplate: "api/Sample/GetValues/{a}/{b}",
defaults: new { controller: "Sample", action: "GetValues", a = UrlParameter.Optional ,b=UrlParameter.Optional }
于 2012-09-02T04:26:24.813 に答える