Dal*_*ale 10 clojure compojure
我试图从url查询字符串中提取一个值但是我可以返回我认为是地图的值,但是当我使用下面的代码时,它不会按预期处理它.任何人都可以建议我如何访问返回的查询字符串数据结构中的特定值?
HTTP://本地主机:8080/remservice富=酒吧
(defroutes my-routes
(GET "/" [] (layout (home-view)))
(GET "/remservice*" {params :query-params} (str (:parameter params))))
Run Code Online (Sandbox Code Playgroud)
Mic*_*zyk 18
您需要将处理程序包装在其中compojure.handler/api或compojure.handler/site添加适当的中间件以获取访问权限:query-params.这曾经是自动发生的defroutes,但不再发生.一旦你这样做,{params :query-params}解构形式会导致params绑定到{"foo" "bar"},当你打/remservice与foo=bar作为查询字符串.
(或者您可以wrap-params手动添加等等 - 这些ring.middleware.*名称驻留在各种名称空间中;请参阅代码compojure.handler(链接到Compojure 1.0.1中的相关文件)以获取其名称.)
例如
(defroutes my-routes
(GET "/remservice*" {params :query-params}
(str params)))
(def handler (-> my-routes compojure.handler/api))
; now pass #'handler to run-jetty (if that's what you're using)
Run Code Online (Sandbox Code Playgroud)
如果您现在点击http://localhost:8080/remservice?foo=bar,您应该看到{"foo" "bar"}- 您的查询字符串的文本表示被解析为Clojure映射.
| 归档时间: |
|
| 查看次数: |
5790 次 |
| 最近记录: |