解析爲REST API我在噴霧下面的代碼來解析由用戶調用REST服務:路徑在噴霧
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
哦,是的,我的不好,id的選擇性使它無論如何都進入了第一條路徑。 mfirry的解決方案是要走的路。 –