Несколько необязательных параметров веб-API-атрибута маршрутизации
Привет, ребята, я новичок в атрибуте маршрутизации и не уверен, что это вообще возможно.
То, что у меня есть, это маршрут атрибута, который отлично работает, как это
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag)
однако теперь я хочу добавить несколько дополнительных параметров, чтобы сузить область поиска, поэтому я хочу добавить 2 дополнительных параметра.
что я пробовал:
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3?}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)
Это работает нормально, если мой звонок /api/controller/1/2
но терпит неудачу с 404, когда дело доходит до /api/controller/1
Как я могу достичь этого?
Правка 1: ответ Нкоси сработал, однако потребовалась дополнительная модификация.
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}/{tagIds?}/{categoryId:int?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , List<int> tagIds, int? categoryId = null )
Список или массив должен быть вторым, так как он автоматически равен нулю, если значение не указано, и не может быть помечен как необязательный с помощью = null
2 ответа
{flag:int=3?}
это проблема. это либо необязательно {flag:int?}
со значением по умолчанию в действии или {flag:int=3}
,
[HttpGet]
Route("GetIssuesByFlag/{flag:int=3}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)
В настоящее время у вас есть 3 дополнительных параметра. когда у вас есть только таблица маршрутизации с 1 значением, вы не будете знать, на какой необязательный параметр вы ссылаетесь, следовательно, 404
Используйте строку запроса.
[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag, List<int> tagIds, int? categoryId = null)
URL: /getissuesbyflag/1? TagIds=2,5,6&categoryId=56
Вы действительно должны использовать строки запроса для необязательных параметров и параметров пути, если они требуются.