2016-07-01 7 views
1

Web APIを初めて使用しています。私は今サンプルアプリケーションを作成しており、同じものでルーティングを理解しようとしています。ここでWebAPI2のrouteTemplateの代わりにルート名を使用したアクセスルーティング

は私のシナリオです:

私は次のようにAuthorControllerと2つのアクションメソッドを持っています:ここで

public IHttpActionResult GetAuthor(int id){//logic} 
public IHttpActionResult GetAuthorByName(string name){//logic} 

デフォルトルートです:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

は今、私は第二の方法にアクセスしたいGetAuthorByNameのような別のルートを使用:

config.Routes.MapHttpRoute(
      name: "routename", 
      routeTemplate: "api/RandomName/GetAuthorByName/{id}", 
      defaults: new { controller = "Authors", action = "GetAuthorByName", id = RouteParameter.Optional } 

     ); 

私はhttp://localhost:1234/api/RandomName/GetAuthorByName?Title=Kajalにアクセスすると、私のコントローラ&私はパラメータで渡すことができます私のコントローラを呼び出す必要がありますように。

これはWeb APIでも可能ですか?または、ルート名を使用して自分のアクションメソッドにアクセスするにはどうすればよいですか?

私はFirefoxのレストクライアントを使用してメソッドを呼び出すことに注意してください。

答えて

1

はい、Web APIでも可能です。そのコントローラとアクションメソッドのルートを指定できます。これはattribute routing(Web API 2で導入)またはregular routingで行うことができます。

通常のルートを使用しているため、パラメータ 'name'をrouteTemplateに指定する必要があります(下図参照)。このルートをデフォルトルートの前に登録すると、アクションメソッドにアクセスするアクセスURLが変更されます。 http://localhost:1234/api/RandomName/GetAuthorByName/Kajal

config.Routes.MapHttpRoute(
      name: "routename", 
      routeTemplate: "api/RandomName/GetAuthorByName/{name}", 
      defaults: new { controller = "Authors", action = "GetAuthorByName", name = RouteParameter.Optional } 

     ); 
関連する問題