Библиотека освободителя 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/

Другие вопросы по тегам