2015-10-04 34 views
2

我下面的一些樣品Clojure的REST API代碼博客文章,發現這 - >https://blog.interlinked.org/programming/clojure_rest.html。然而,當我嘗試使用這個curl命令來發布一些數據: -
curl -XPOST -d '{"id": "1", "title": "First document", "text": "First document text"}' http://localhost:3000/documents學習Clojure的:無法修復

,我得到以下異常: -

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 

有人可以幫我解決這個問題?
TIA

+0

這可能只是你的'curl'電話。你應該將內容類型設置爲'應用程序/ json' – leeor

回答

2

試試這個:

curl -XPOST -H "Content-Type: application/json" -d '{"id": "1", "title": "First document", "text": "First document text"}' http://localhost:3000/documents 
+0

作品。謝謝 ! – ZeroGraviti

+0

在這個例子中,'「ID」'關鍵是不實際需要,將與一個UUID來代替。 –