4

Мне было интересно, если мы используем атрибут RoutePrefix в нашем веб-контроллере api с другим именем с фактического имени контроллера. Так будет это работать или нет?Префикс маршрута Имя контроллера VS (Web api)

Насколько я сделал

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

если мы определим RoutePrefix как выше мы не можем получить доступ к нему через /quotation, но мы можем получить доступ к нему с помощью saleorder.

Итак, что такое RoutePrefix или я что-то не так?

+0

Убедитесь, что маршрутизация атрибут включены первые 'config.MapHttpAttributeRoutes()', то префикс маршрута будет работайте, как ожидалось. https://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 – Nkosi

+0

его включен, но все еще не работает, потому что я не хочу добавить Маршруты для каждого метода, потому что если я сделаю так, мой маршрут будет '/ quotation/getall', и это неверно. Я думаю, что это должно быть '/ quotation' для Get –

+1

Вы используете маршрут по умолчанию' Route ("") 'метода getall. Но вы должны использовать его, если вы реализуете маршрутизацию атрибутов. это в названии – Nkosi

ответ

3

Чтобы использовать использовать маршрут по умолчанию Route("")

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

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

} 

Источник: Attribute Routing in ASP.NET Web API 2 : Route Prefix

3

Для того, чтобы он работал, необходимо вызвать код ниже внутри WebApiConfig.Register() метода:

config.MapHttpAttributeRoutes(); 

Так что ваши RoutePrefix работает как exptected:

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

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

} 

Так ваш может получить доступ к API, например:

  • котировка/пример
  • цитата/другое
+0

Что делать, если я не добавил маршрут к моим методам в конкретном контроллере? –

+0

@AhsanAttari, Route и RoutePrefix работают рука об руку. https://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2 – Nkosi

+0

Если вы хотите работать с маршрутизацией, вы должны добавить ' [Маршрут] "для каждого действия. Если вам нужен маршрут к префиксу ** вашего маршрута **, вы можете сделать, как предложил @Nkosi. – Alisson