Для использования текущего кода
[Route("api/QRCode")]
- это базовый маршрут для всех действий в контроллере.
Значение в атрибуте Route
метода присоединяется к базовому маршруту контроллера.
Таким образом, для [Route("CreateCode/{Version}/{PrintPPI}/{CellSize}")]
(обратите внимание на удаление символа первой косой черты) полный маршрут:
api/QRCode/CreateCode/{Version}/{PrintPPI}/{CellSize}
https://localhost:44349/api/QRCode/CreateCode/1/300/2
Изменение кода для соответствия URL
Просто оставьте свой маршрут до:
[Route("CreateCode")]
Это работает, потому что фактический URL-маршрут заканчивается на .../CreateCode
без строки запроса. Параметры после ?
будут выбраны из строки запроса.
Extra
Microsoft Docs - Объединение маршрутов о том, как правильно комбинировать маршруты
Шаблоны маршрутов, примененные к действию , которые начинаются с / не получить
в сочетании с шаблонами маршрутов, примененными к контроллеру . Этот пример
соответствует набору путей URL, аналогичных маршруту по умолчанию
[Route("Home")]
public class HomeController : Controller
{
[Route("")] // Combines to define the route template "Home"
[Route("Index")] // Combines to define the route template "Home/Index"
[Route("/")] // Doesn't combine, defines the route template ""
public IActionResult Index()
{
ViewData["Message"] = "Home index";
var url = Url.Action("Index", "Home");
ViewData["Message"] = "Home index" + "var url = Url.Action; = " + url;
return View();
}
[Route("About")] // Combines to define the route template "Home/About"
public IActionResult About()
{
return View();
}
}