Je veux créer une fonction de gestionnaire qui prend deux entrées. L'un est un paramètre pris de l'url /name
, et le second est un param de la chaîne de requête /name?x=3
comment accéder/passer la carte de demande dans un gestionnaire de moustache
(def my-app (app
[page-name] (handler page-name)))
(defn handler
[{:keys [params]} page-name]
(let [x (params "x")]
(-> (page-templ page-name x) response constantly)))
ci-dessus échoue parce que le gestionnaire attend 2 params, mais je ne fais que passons un.
Comment puis-je obtenir la carte de requête et la transmettre au gestionnaire?
La carte de demande dans le cas ci-dessus contient un paramètre nommé x
.
Une autre chose, vous ne devriez pas utiliser constamment si la réponse dépend de la demande. ** constamment ** est utilisé pour renvoyer rapidement une réponse agnostique, ce qui signifie que cela ne vous intéresse pas si vous avez des paramètres ou non. –
Merci pour la réponse, c'était extrêmement utile. Maintenant, je définis toutes mes fonctions de la manière ci-dessus. Cependant, je ne suis pas capable de faire fonctionner le wrap-keyword-params. Je reçois toujours des clés de chaîne. J'ai posté mon code sur https://github.com/murtaza52/hs-ex – murtaza52
Désolé, votre application Web ne fonctionne pas, mais je pense que si vous spécifiez des wrappers dans la macro de l'application, vous devez inverser leur ordre: (app (wrap-params) (wrap-mot-clé-params) [""] (serve-index)) –