如何在Web.Api中添加多个路由

时间:2019-08-16 08:45:01

标签: c# asp.net-web-api routes

我创建了一个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

更新方法的路线如何?

4 个答案:

答案 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 }
        );

注意:该地址必须位于现有路线上方,否则将优先。