我创建了一个asp.net web.api。我有一个名为Books的控制器,它有2个看起来像这样的方法。
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 /图书/ xxxxpasscodexxx / 1
更新方法的路线如何?
答案 0 :(得分:2)
将路由更改为
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{pass}/{Id}",
defaults: new { transationId = RouteParameter.Optional }
);
答案 1 :(得分:1)
您还可以使用当前的默认路由进行更新。webapi将提供[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
答案 2 :(得分:0)
请查看here。您可以将Controller标记为APIController,指定常规路由,然后使用Route参数定义http动词和方法路径。这将覆盖您的Routes.MapHttpRoute定义。
答案 3 :(得分:0)
添加属性
[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 }
);
注意:该地址必须位于现有路线上方,否则将优先。