Reputation: 1087
I was following a blog post on some sample clojure rest api code and found this -> https://blog.interlinked.org/programming/clojure_rest.html. However, when I try to POST some data using this curl command :-
curl -XPOST -d '{"id": "1", "title": "First document", "text": "First document text"}' http://localhost:3000/documents
, I get the following exception :-
java.lang.ClassCastException: org.eclipse.jetty.server.HttpInput cannot be cast to clojure.lang.Associative
RT.java:702 clojure.lang.RT.assoc
core.clj:187 clojure.core/assoc
handler.clj:60 clojure-rest.handler/create-new-document[fn]
jdbc.clj:302 clojure.java.jdbc/with-connection*
handler.clj:59 clojure-rest.handler/create-new-document
handler.clj:78 clojure-rest.handler/fn[fn]
core.clj:104 compojure.core/make-route[fn]
core.clj:94 compojure.core/wrap-route-middleware[fn]
core.clj:41 compojure.core/if-route[fn]
core.clj:27 compojure.core/if-method[fn]
core.clj:118 compojure.core/routing[fn]
core.clj:2515 clojure.core/some
core.clj:118 compojure.core/routing
RestFn.java:139 clojure.lang.RestFn.applyTo
core.clj:626 clojure.core/apply
core.clj:123 compojure.core/routes[fn]
Var.java:379 clojure.lang.Var.invoke
core.clj:118 compojure.core/routing[fn]
core.clj:2515 clojure.core/some
core.clj:118 compojure.core/routing
RestFn.java:423 clojure.lang.RestFn.invoke
handler.clj:79 clojure-rest.handler/fn
core.clj:189 compojure.core/if-context[fn]
core.clj:118 compojure.core/routing[fn]
core.clj:2515 clojure.core/some
core.clj:118 compojure.core/routing
RestFn.java:139 clojure.lang.RestFn.applyTo
core.clj:626 clojure.core/apply
core.clj:123 compojure.core/routes[fn]
keyword_params.clj:35 ring.middleware.keyword-params/wrap-keyword-params[fn]
nested_params.clj:84 ring.middleware.nested-params/wrap-nested-params[fn]
params.clj:64 ring.middleware.params/wrap-params[fn]
json.clj:21 ring.middleware.json/wrap-json-body[fn]
json.clj:40 ring.middleware.json/wrap-json-response[fn]
Var.java:379 clojure.lang.Var.invoke
reload.clj:18 ring.middleware.reload/wrap-reload[fn]
stacktrace.clj:17 ring.middleware.stacktrace/wrap-stacktrace-log[fn]
stacktrace.clj:80 ring.middleware.stacktrace/wrap-stacktrace-web[fn]
jetty.clj:18 ring.adapter.jetty/proxy-handler[fn]
(Unknown Source) ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle
HandlerWrapper.java:116 org.eclipse.jetty.server.handler.HandlerWrapper.handle
Server.java:363 org.eclipse.jetty.server.Server.handle
AbstractHttpConnection.java:483 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest
AbstractHttpConnection.java:931 org.eclipse.jetty.server.AbstractHttpConnection.content
AbstractHttpConnection.java:992 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content
HttpParser.java:856 org.eclipse.jetty.http.HttpParser.parseNext
HttpParser.java:240 org.eclipse.jetty.http.HttpParser.parseAvailable
AsyncHttpConnection.java:82 org.eclipse.jetty.server.AsyncHttpConnection.handle
SelectChannelEndPoint.java:628 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle
SelectChannelEndPoint.java:52 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
QueuedThreadPool.java:608 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob
QueuedThreadPool.java:543 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run
(Unknown Source) java.lang.Thread.run
Can someone help me fix this ?
TIA
Upvotes: 2
Views: 638
Reputation: 17761
try this:
curl -XPOST -H "Content-Type: application/json" -d '{"id": "1", "title": "First document", "text": "First document text"}' http://localhost:3000/documents
Upvotes: 3