Перейти к содержанию

Сочетание атрибутов маршрута, чтобы шаблоны маршрутов следовали принципу DRY

Рассмотрим код с дублирующимися маршрутами.

public class CarController
{
    [Route("api/car/start")]
    [Route("api/car/ignition")]
    [Route("/start-car")]
    public IActionResult Start()
    {
        /*реализация*/
    }
    [Route("api/car/speed/{speed}")]
    [Route("/set-speed/{speed}")]
    public IActionResult SetCarSpeed(int speed)
    {
        /*реализация*/
    }
}

Здесь api/car содержится в большинстве маршрутов. Чтобы исправить ситуацию, можно применить атрибут [Route] к классу контроллера:
[Route("api/car")]
public class CarController
{
    [Route("start")]
    [Route("ignition")]
    [Route("/start-car")]
    public IActionResult Start()
    {
        /*реализация*/
    }
    [Route("speed/{speed}")]
    [Route("/set-speed/{speed}")]
    public IActionResult SetCarSpeed(int speed)
    {
        /*реализация*/
    }
}

В этом случае, если шаблон у действия не начинается с /, шаблон действия будет объединением шаблона контроллера и шаблона действия.


Последнее обновление : 28 сентября 2022 г.
Дата создания : 28 сентября 2022 г.

Комментарии

Комментарии