Comment puis-je analyser les paramètres de requête dans le routage de pulvérisation ?
-
20-12-2019 - |
Question
Voici à quoi ressemble la section de code
get{
respondWithMediaType(MediaTypes.`application/json`){
entity(as[HttpRequest]){
obj => complete{
println(obj)
"ok"
}
}
}
}~
Je peux mapper la requête sur un objet spray.http.HttpRequest et je peux extraire l'URI de cet objet, mais j'imagine qu'il existe un moyen plus simple d'analyser les paramètres d'une requête get que de le faire manuellement.
Par exemple, si ma demande d'obtention est
http://localhost:8080/url?id=23434&age=24
Je veux pouvoir obtenir l'identité et l'âge de cette demande
La solution
En fait, vous pouvez faire beaucoup mieux.Dans le routage, il y a deux directives : parameter
et parameters
, je suppose que la différence est claire, vous pouvez également utiliser quelques modificateurs : !
et ?
.En cas de !
, cela signifie que ce paramètre doit être fourni sinon la requête va être rejetée et ?
renvoie une option, vous pouvez donc fournir un paramètre par défaut dans ce cas.Exemple:
val route: Route = {
(path("search") & get) {
parameter("q"!) { query =>
....
}
}
}
val route: Route = {
(path("search") & get) {
parameters("q"!, "filter" ? "all") { (query, filter) =>
...
}
}
}