Причиной сопоставления этих двух запросов первому маршруту является порядок, в котором вы их определили. Документация Spark Java упоминает здесь , что:
Маршруты сопоставляются в порядке их определения. Вызывается первый маршрут, соответствующий запросу.
При вызове http://localhost:4567/test/2/3
Java Spark попытается сначала сопоставить его с первым определенным вами маршрутом "/test/:idtest/:idsimple"
:
- Переменная
idtest
будет соответствовать 2
- Переменная
idsimple
будет соответствовать 3
При вызове http://localhost:4567/test/all/5
Java Spark будетпопробуйте сначала сопоставить его с первым определенным вами маршрутом:
- Переменная
idtest
будет соответствовать all
- Переменная
idsimple
будет соответствовать 5
Таким образом, оба они совпадают и, следовательно, сопоставляются с этим маршрутом.
Если вы измените порядок определений маршрутов, то "/test/all/:idtest"
будет первым подходящим путемпротив и затем вызов http://localhost:4567/test/all/5
будет сопоставлен с правильным маршрутом, в то время как вызов http://localhost:4567/test/2/3
завершится неудачно с первым и будет сопоставлен со вторым.