Измените порядок на
/student/id/grades
/student/id
Ошибка возникает потому, что поиск маршрута происходит в том порядке, в котором вы их перечислили.
Например,скажем, у вас есть два маршрута следующим образом: /a/b
и /a/
Давайте рассмотрим два случая -
Порядок 1
/ a /
/a / b /
Теперь, если вы ищете /a/<some id>
, тогда он соответствует первому маршруту, и вы соответственно маршрутизируете.Опять же, когда вы ищете /a/b/<some id>
, префикс т.е. /a/
снова совпадает, и вы направляетесь на первый маршрут.
Порядок 2 -
/ a/ b /
/ a /
Теперь, если вы ищете /a/<some id>
, тогда он не соответствует первому маршруту (так как префикс /a/b/
не совпадает).Но второй маршрут совпадает, и вы соответственно направляетесь. В качестве альтернативы, если вы ищете /a/b/<some id>
, то первый маршрут совпадает.И тогда вы будете направлены на правильный URL.
Как правило, не забывайте сначала указывать более конкретный случай.