gpt4 book ai didi

clojure - 如何在 Noir 中获取 JSON post 数据

转载 作者:行者123 更新时间:2023-12-02 16:56:39 25 4
gpt4 key购买 nike

不久前,Chris Granger 发布了 this middleware使 JSON 哈希值出现在“backbone”元素下的 defpage 参数中。

(defn backbone [handler]
(fn [req]
(let [neue (if (= "application/json" (get-in req [:headers "content-type"]))
(update-in req [:params] assoc :backbone (json/parse-string (slurp (:body req)) true))
req)]
(handler neue))))

如何修改此代码以使 JSON 元素在 defpage 中显示为顶级参数;即摆脱 :backbone 伞?

最佳答案

您可以做两件事。一种选择是将 :params 的值替换为解析 JSON 后返回的映射。为此,只需将新映射与 :params 键关联即可。

(assoc req [:params] (json/parse-string (slurp (:body req)) true))

另一个选项(如 @dAni 建议)是将解析的 JSON 的值合并到其中,以便 :params 映射中的现有值不会被覆盖。这里之所以需要使用 partial 而不是仅仅使用 merge 是因为最终的 map 是从左到右的 map 合并的结果。如果您希望 JSON 映射中的值优先,则您的解决方案有效。

(update-in req [:params]
(partial merge (json/parse-string (slurp (:body req)) true)))

关于clojure - 如何在 Noir 中获取 JSON post 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10638939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com