简体   繁体   English

路由前缀VS控制器名称(Web api)

[英]Route Prefix VS Controller Name ( Web api )

I was wondering that if we use RoutePrefix attribute in our web api controller with a different name from controller's actual name. 我想知道如果我们在web api控制器中使用RoutePrefix属性,其名称与控制器的实际名称不同。 So would it work or not? 它会起作用吗?

As far as i did 就我而言

[RouterPrefix("quotation")]
public class SaleOrderController : ApiController { ... }

if we define RoutePrefix like above we can't access it via /quotation but we can access it using saleorder . 如果我们如上所述定义RoutePrefix ,我们无法通过/quotation访问它,但我们可以使用saleorder访问它。

So what is RoutePrefix for or am i doing something wrong ? 什么是RoutePrefix ,或者我做错了什么?

To use default route use Route("") 要使用默认路由,请使用Route("")

[RoutePrefix("quotation")]
public class SaleOrderController : ApiController {

    //GET quotation
    [Route("")]
    [HttpGet]
    public IHttpActionResult GetAll() { ... }

}

Source: Attribute Routing in ASP.NET Web API 2 : Route Prefix 源: ASP.NET Web API 2中的属性路由:路由前缀

In order for it to work, you need to call the code below inside your WebApiConfig.Register() method: 为了使它工作,您需要在WebApiConfig.Register()方法中调用下面的代码:

config.MapHttpAttributeRoutes();

So your RoutePrefix works as exptected: 所以你的RoutePrefix就像被RoutePrefix工作:

[RoutePrefix("quotation")]
public class SaleOrderController : ApiController
{
    [Route("example")]
    [HttpGet]
    public IHttpActionResult Example()
    {
        return Ok();
    }

    [Route("another")]
    [HttpGet]
    public IHttpActionResult Another()
    {
        return Ok();
    }

}

So your could access your apis like this: 所以你可以像这样访问你的api:

  • quotation/example 报价/示例
  • quotation/another 报价/其他

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM