如何在Compojure / Ring项目中获取传入的POST
http请求:body #object[org.eclipse.jetty.server.HttpInputOverHTTP 0x42c3599b "HttpInputOverHTTP@42c3599b"]
的内容?
我知道此:body
由名为data
且MIME-type
为text-plain
的部分和另一部分excel
MIME-type
组成。是application/excel
。
答案 0 :(得分:2)
手动解析二进制流很困难。按如下方式包装您的处理程序:
(wrap-multipart-params handler options)
此中间件解析正文并使用已解析的数据填充:params
参数。
有关详细信息,请参阅ring.middleware.multipart-params文档。
答案 1 :(得分:0)
您可以找到我强烈推荐的基本示例in the Clojure Cookbook (O'Reilly):
(ns ringtest
(:require
[ring.adapter.jetty :as jetty]
clojure.pprint))
;; Echo (with pretty-print) the request received
(defn handler [request]
{:status 200
:headers {"content-type" "text/clojure"}
:body (with-out-str (clojure.pprint/pprint request))})
(defn -main []
;; Run the server on port 3000
(jetty/run-jetty handler {:port 3000}))
答案 2 :(得分:0)
我在 Reitit 中看到它,对我来说修复的是更改中间件的顺序,因此 exception-middleware
在 multipart/multipart-middleware
之后。
:middleware [;; multipart
multipart/multipart-middleware
;; exception handling
exception-middleware]