Как иметь много дополнительных маршрутов в .Net Core - PullRequest
1 голос
/ 26 сентября 2019

Как я могу сделать возможность принимать запросы в разных заказах и с некоторыми дополнительными параметрами?

https://localhost:44314/api/courses/page=2&pageSize=6&language=test&institution=test&area=test

https://localhost:44314/api/courses/page=2&pageSize=6&institution=test&area=test

https://localhost:44314/api/courses/page=2&pageSize=6&area=test&language=test

Я попытался, как показано ниже:

[HttpGet]
[Route("page={page:int}&pageSize={pageSize:int}&language={language?}&institution={institution?}&area={area?}")]
public async Task<ActionResult<CourseViewModel>> ListCourses(int page, int pageSize, string language="", string institution="", string area="")

И у меня есть ошибка как:

System.ArgumentException: 'Необязательный параметр должен быть в концесегментВ сегменте "page = {page} & pageSize = {pageSize} & language = {language?} & Agency = {учреждение?} & Area = {area?}" За необязательным параметром "language" следует '& institu = = ".Имя параметра: routeTemplate '

1 Ответ

2 голосов
/ 26 сентября 2019

Удалите шаблон маршрута, и таблица маршрутов будет использовать параметры действия для сопоставления маршрута через строку запроса в запрошенном URL-адресе

//GET api/courses?page=2&pageSize=6&language=test&institution=test&area=test
//GET api/courses?page=2&pageSize=6&institution=test&area=test
//GET api/courses?page=2&pageSize=6&area=test&language=test
[HttpGet]
[Route("")]
public async Task<ActionResult<CourseViewModel>> ListCourses(int page, int pageSize, string language = "", string institution = "", string area = "")

В этом случае порядок не имеет значения.Как только они присутствуют, должны быть сопоставлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...