Я следующий код в спрей для разбора службы REST вызывается пользователем:Путь разбора для REST API в Spray
val route = {
pathPrefix("v0") {
pathPrefix("pets") {
pathEndOrSingleSlash {
pathEnd {
get {
complete("/v0/pets")
}
} ~
get {
complete("/v0/pets/")
}
} ~
parameters('id ?) {
id =>
get {
complete("/v0/pets?id=" + id)
}
}
}
}
}
Проблема заключается в том, что он не ведет себя, как ожидалось. Я ожидаю следующее поведение из кода:
http://127.0.0.1/v0/pets => /v0/pets
http://127.0.0.1/v0/pets/ => /v0/pets/
http://127.0.0.1/v0/pets?id=1234 = > /v0/pets?id=Some(1234)
Но, я получаю следующие результаты для запросов:
http://127.0.0.1/v0/pets => /v0/pets
http://127.0.0.1/v0/pets/ => /v0/pets
http://127.0.0.1/v0/pets?id=1234 => /v0/pets
Спасибо @ gabriele-petronella за ваш ответ. Но с вашим предлагаемым решением последние два пути никогда не выполняются. Оба они просто выполняются только по первому пути и выводят вывод как/v0/pets /? Id = None – Chuchu
oh да, мой плохой, опциональность 'id' заставляет его вводить первый путь в любом случае. Решение mfirry - путь. –