在 WebAPI2 中使用路由名称而不是 routeTemplate 访问路由
Access Routing using route name instead of routeTemplate in WebAPI2
我是网络新手 API。我现在正在创建示例应用程序并尝试在其中理解路由。
这是我的场景:
我有 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 的 Rest 客户端调用方法。
是的,在 Web 中是可能的 API。您可以为该控制器和操作方法指定路由。这可以通过 attribute routing (introduced in Web API 2) or with regular routing.
来完成
由于您使用的是常规路由,因此需要在 routeTemplate 中指定参数 'name',如下所示。如果您在默认路由之前注册此路由,将访问 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 }
);
我是网络新手 API。我现在正在创建示例应用程序并尝试在其中理解路由。
这是我的场景:
我有 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 的 Rest 客户端调用方法。
是的,在 Web 中是可能的 API。您可以为该控制器和操作方法指定路由。这可以通过 attribute routing (introduced in Web API 2) or with regular routing.
来完成由于您使用的是常规路由,因此需要在 routeTemplate 中指定参数 'name',如下所示。如果您在默认路由之前注册此路由,将访问 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 }
);