我是Web 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客户端来调用方法。
答案 0 :(得分:1)
是的,可以在Web API中使用。您可以为该控制器和操作方法指定路由。这可以使用attribute routing(在Web API 2中引入)或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 }
);