Я бы посоветовал вам использовать следующие маршруты:
[HttpGet("{make}/vehicles/{makeId:int}")]
[HttpGet("{make}/{query}/vehicles/{makeId:int}")]
В этом случае нет никакой двусмысленности между Toyota/vehicles/2
и Toyota/Corolla/vehicles/2
.В вашем случае это имеет неоднозначность из-за того, что {query}
является типом string
, поэтому строка Toyota-Corolla-vehicles
соответствует как {make}-vehicles
, так и {make}-{query}-vehicles
, потому что мы можем проанализировать ее следующим образом:
- ALL
{make}
параметр равен Toyota-Corolla
; {make}-{query}
равен Toyota-Corolla
, где {make}
равно Toyota
и {query}
равно Corolla
соответственно.
Итак, проблема в вашем персонаже -
.Если вы не хотите менять свои маршруты, вы можете оставить только [HttpGet("{make}-vehicles/{makeId:int}")]
и затем выделить Toyota-Corolla
методом string.Split
.