在环形服务器内处理 http 请求时,请求数据的正文存储在请求 HashMap 中的键 :body
中。例如如下:
#object[org.eclipse.jetty.server.HttpInputOverHTTP 0x2d88a9aa "HttpInputOverHTTP@2d88a9aa"]
如果我只对原始文本感兴趣,我如何读出这个对象?
最佳答案
您可以使用ring.util.request/body-string
以字符串形式获取请求正文。
(body-string request)
您需要记住 InputStream
只能读取一次,因此您可能更愿意用读取的 String
替换原始 :body
,这样您稍后可以再次访问它:
(defn wrap-body-string [handler]
(fn [request]
(let [body-str (ring.util.request/body-string request)]
(handler (assoc request :body (java.io.StringReader. body-str))))))
并添加中间件来包装您的处理程序:
(def app
(wrap-body-string handler))
关于clojure - ring:将 http 请求的正文读取为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397531/