C# 如何在Web.Api中添加多个路由
我已经创建了一个asp.net web.api。我有一个名为Books的控制器,它有两个类似的方法C# 如何在Web.Api中添加多个路由,c#,asp.net-web-api,routes,C#,Asp.net Web Api,Routes,我已经创建了一个asp.net web.api。我有一个名为Books的控制器,它有两个类似的方法 public IHttpActionResult Read(string pass, string Id) public IHttpActionResult Update(string pass, string Id) 如何在webApiConfig文件中为这两种方法添加路由 现在我只有这个关于Read方法的工作 config.Routes.MapHttpRoute(
public IHttpActionResult Read(string pass, string Id)
public IHttpActionResult Update(string pass, string Id)
如何在webApiConfig文件中为这两种方法添加路由
现在我只有这个关于Read方法的工作
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{pass}/{Id}",
defaults: new { transationId = RouteParameter.Optional }
);
这个我可以像这样访问。。
Api/Books/xxxxpasscodexxx/1
更新方法的路径是什么样子的?请看一看。您可以将控制器标记为APIController,指定常规路由,然后使用route参数定义http谓词和方法路径。这将覆盖您的Routes.MapHttpRoute定义。您也可以使用当前默认路由进行更新。web api将提供[FromUri]属性,用于从Httprequestmessage的URI读取操作参数
[HttpPut]
public IHttpActionResult Update([FromUri]string pass, [FromUri]string Id)
{
//do your stuff here and return
}
您的请求应该是Api/Books?password=xxxx&string=abc添加属性
[HttpGet]
public IHttpActionResult Read(string pass,int id)
[HttpGet]
public IHttpActionResult Update(string pass,int id)
在webapiconfig中添加路由
config.Routes.MapHttpRoute(
name: "DefaultActionApi",
routeTemplate: "api/{controller}/{action}/{pass}/{id}",
defaults: new { id = RouteParameter.Optional }
);
注意:这必须在现有路由之上,否则优先。将路由更改为
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{pass}/{Id}",
defaults: new { transationId = RouteParameter.Optional }
);
谢谢@sakhib,它起作用了,但我必须删除默认路由,否则只有更新方法起作用