Closed vbauer closed 10 years ago
Currently, the :formats
key is only used for deserializing the request body. The response still needs to be serialized explicitly.
Thank you for information!
FYI:
I have the same problem when I use custom middleware to serialize response body into JSON:
(defn json-response-middleware [handler]
(fn [request]
(let [response (handler request)]
(response/json (:body response)))))
It works fine only with "defroutes".
I did a bit of digging and looks like the ring-middleware-format library that lib-noir
uses to handle formats expects the response to use the :body
key:
(GET "/json" [] {:body {:foo "bar"}})
This should get serialized as expected without having to use response/json
or custom middleware.
Yes, it works, thank you. Maybe it'll be better to add a simple example in template (for preventing silly questions like this)?
I updated the docs on the site, and I'll take a look at adding a sample route in the template.
I've created project from template and tried to add some REST API method.:
Method (db/find-tags-info) works fine and was tested. During processing response I have an exceptions:
But it works fine, if I wrap response using noir.response "json" method:
I have the following App configuration:
Could you please help me? I thought it should work out of box (:formats [:json-kw :edn])