Библиотека освободителя Clojure не отправляет ответ JSON
Я довольно новичок в экосистеме Clojure webdev, я хочу отправить JSON-ответ методом POST, используя API-интерфейс liberator, я попробовал это:
(POST "/post/savecomment"
request
(resource
:allowed-methods [:post]
:available-media-types ["application/json"]
:handle-ok (fn [ctx]
(format (str "{body: %s a: 1 b: 4}"), "the body part"))))
Все выглядит нормально, сообщения об ошибке нет, я получаю ответ "201 Created" из кольца, но данные JSON не отправляются, в Chrome вкладка "ответ" просто пуста. Нужно ли что-то добавить? Кстати, я использую compojure, а не compojure-api.
Я также попробовал:
(POST "/post/savecomment" request (resource
:allowed-methods [:post]
:available-media-types ["application/json"]
:available-charsets ["utf-8"]
:handle-ok (fn [_] (rep/ring-response {:status 200 :body "\"this is json\""}))
:post! (fn [ctx] (rep/ring-response {:status 666 :body "\"this is json\""}))
))
Но не повезло.
1 ответ
За 201 Created
ответы вам нужно определить обработчик :handle-created
например,
(POST "/post/savecomment"
request
(resource
:allowed-methods [:post]
:available-media-types ["application/json"]
:handle-created (fn [ctx]
(format (str "{body: %s a: 1 b: 4}"), "the body part"))))
Учебное пособие охватывает основные понятия освободителя: https://clojure-liberator.github.io/liberator/tutorial/