Tôi đang đấu tranh để trả lại JSON từ một đặt! yêu cầu:clojure liberator - trả lại json từ một yêu cầu đặt
Mã của tôi trông như thế này:
(defn body-as-string [ctx]
(if-let [body (get-in ctx [:request :body])]
(condp instance? body
java.lang.String body
(slurp (io/reader body)))))
(defn orbit-world [dimensions ctx]
(let [in (json/parse-string (body-as-string ctx))]
(json/generate-string in)))
(defn init-world [params]
(let [dimensions (Integer/parseInt params)
world (vec (repeat dimensions (vec (take dimensions (repeatedly #(rand-int 2))))))]
(json/generate-string world)))
(defresource world [dimensions]
:allowed-methods [:get :put]
:available-media-types ["application/json"]
:available-charsets ["utf-8"]
:handle-ok (fn [_] (init-world dimensions))
:put! (fn [ctx] (orbit-world dimensions ctx)))
tôi chỉ đơn giản muốn trở lại bất cứ điều gì mà sẽ được chuyển cho các yêu cầu đặt lại như JSON cho đến khi tôi hiểu những gì đang xảy ra.
Nhưng nếu tôi thực hiện một yêu cầu đặt, tôi nhận được câu trả lời sau đây:
HTTP/1.1 201 Created
Ngày: Chủ nhật, ngày 18 tháng 5 năm 2014 15:35:32 GMT
Content-type: text/plain
Content-Length: 0
server: Jetty (7.6.8.v20121106)
yêu cầu GET của tôi trả về JSON vì vậy tôi không hiểu tại sao các yêu cầu PUT không phải là/
Nó thực sự có thể giúp thêm phần mềm trung gian theo dấu Liberator. Sau đó, bạn sẽ nhận được các tiêu đề X-Liberator trong các câu trả lời thể hiện trạng thái của người giải phóng tại các điểm quyết định khác nhau. Nó cũng cho bạn thấy trình xử lý nào được sử dụng. Trong trường hợp này, nó sẽ cho thấy rằng mặc định xử lý tạo đã được sử dụng. –