Пользовательская маршрутизация WebApi в dotnet Core - PullRequest
0 голосов
/ 05 ноября 2019

В ядре dotnet я пытаюсь создать конечную точку webapi, которая имеет значение перед именем контроллера. Пример:

шаблон: "api / {AccountId} / [controller]"

конечная точка "api / 435ABC / Reports / EndOfYear"

Я видел много примеров накак это сделать в MVC и в Framework 4.x, но не так много с WebApi и где я устанавливаю параметр перед именем контроллера.

1 Ответ

1 голос
/ 06 ноября 2019

В атрибут маршрутизации вы должны изменить свой маршрут контроллера на [Route("api")], чтобы принимать все вызовы от https://example.com/api.

Примечание: это повлияет на все маршрутывнутри контроллера Reports .

[Route("api")]
public class ReportsController : ApiController

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

[Route("{id}/[controller]/[action]")]

таким образом, вы можете вызвать метод действия с помощью https://example.com/api/435ABC/Reports/EndOfYear.

В маршрутизации на основе конвенций следует только добавить маршрут в UseMvc метод и удалить Route атрибутов из контроллера и действия:

app.UseMvc(routes =>
{
    routes.MapRoute(name: "default", template: "api/{controller=Home}/{action=Index}"); // this line specifies default route
    routes.MapRoute(name: "Reports", template: "api/{id}/{controller=Reports}/{action=EndOfYear}"); // this line specifies your custom route
});
...