Je me bats pour retourner JSON d'un put! demande:clojure liberator - retourner json à partir d'une demande put
Mon code ressemble à ceci:
(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)))
Je veux simplement revenir tout ce qui est passé à la demande de remettre le plus JSON jusqu'à ce que je comprends ce qui se passe.
Mais si je fais une demande de vente, je reçois la réponse suivante:
HTTP/1.1 201 Créé
Date: 18 mai 2014 15:35:32 GMT
Content-type: text/plain
Content-Length: 0
serveur: Jetty (7.6.8.v20121106)
Ma requête GET retourne JSON donc je ne comprends pas pourquoi la demande PUT est pas/
Cela peut vraiment aider à ajouter le middleware wrap-trace Liberator. Vous obtiendrez alors les en-têtes X-Liberator dans les réponses qui montrent l'état du libérateur à divers points de décision. Il vous montre également quel gestionnaire a été utilisé. Dans ce cas, cela montrerait que le handle-created par défaut était utilisé. –