Различия между этими двумя формами маршрутизации WebApi? - PullRequest
0 голосов
/ 12 июня 2018

Я новичок в программировании Web Api и впервые работаю над веб-приложением .Net Framework.Я упаковываю некоторые из своих объектов в вызовы Web Api, и мне было интересно, имели ли эти два метода маршрутизации в моих контроллерах какие-либо различия?Я не хочу начинать использовать только один, чтобы потом узнать, что у него есть некоторые недостатки и т. Д.

Первый способ - указать маршрут перед классом:

[Route("api/[controller]/[action]")]
public class SomeController : Controller {

    [HttpGet("{parameter}")]
    public Object SomeMethod(int parameter) { ... }

    (...)
}

и второй метод будет указывать маршрут перед каждым методом:

[Route("api/[controller]")]
public class SomeController : Controller {

    [HttpGet("SomeMethod/{parameter}")]
    public Object SomeMethod(int parameter) { ... }

    (...)
}

Я просто недостаточно опытен, чтобы знать, в чем различия между этими двумя блоками кода, и есть ли какие-либо другие способыидти об этом, которые являются более эффективными.Спасибо!

Мне также понадобится в будущем реализовать Post, Put, Delete и т. Д.

1 Ответ

0 голосов
/ 12 июня 2018

Разница между этими двумя вариантами заключается в наличии [action] в URL шаблона.Поэтому, если вы поймете, как работает [controller], вам будет легко понять и цель [action].

Первый вариант ([Route("api/[controller]/[action]")]) лучше, когда вы не хотите беспокоиться при переименовании.Ваш метод действия.С помощью этой опции в будущем, если вы переименуете свой метод действия, он будет автоматически отражен в URL.На самом деле у вас есть api/some/somemethod в качестве URL, но если вы переименуете SomeMethod в MySuperSomeMethod, новый URL будет api/some/mysupersomemethod.

Второй параметр использует [HttpGet("SomeMethod/{parameter}")], а имя вашего метода действия находится внутри шаблона маршрута.Так что если вы переименуете SomeMethod в MySuperSomeMethod, сгенерированный URL всегда будет api/some/somemethod.

...