2012-10-20 15 views
6

मेरे Compojure वेब अनुप्रयोग ([compojure "1.0.1"]) हमेशा जोड़ने रैप-पैरामीटर आदि कोड नीचे दिए गए नमूना के बावजूद एक खाली पैरामीटर नक्शा प्राप्त करता है,:Compojure मार्ग पैरामीटर खाली

(defroutes public-routes 
    (PUT "/something" {params :params} 
     (println (str "Params: " params)) 
     (do-put-something params))) 

(def myapp 
    (-> public-routes 
     ring-params/wrap-params)) 

(defn start-server [] 
    (future (jetty/run-jetty (var myapp) {:port 8080}))) 

मैं कोशिश की है रैप-पैरा, रैप-कीवर्ड-पैराम्स और रैप-मल्टीपार्ट-पैराम्स जोड़ते हुए, लेकिन जब मैं httpie (या मेरे क्लाइंट) का उपयोग करके एंडपॉइंट पर जाता हूं, तो मुझे लगता है कि पैरा हमेशा खाली होते हैं। क्या कोई मदद कर सकता है?

धन्यवाद!

+2

लगाने के लिए कि आपकी समस्या compojure मार्ग परिभाषा में या परम रैप-पैरामीटर द्वारा निकाले नहीं किया जा रहा है, मैं अस्थायी रूप से है कि आप की सिफारिश कर सकते '(सार्वजनिक मार्गों को रोकें [req] (println req)) 'तो आप पूरे अंगूठी अनुरोध मानचित्र देख सकते हैं? –

उत्तर

1

आपके उदाहरण कोड के साथ एकमात्र समस्या यह थी कि इसमें रूट बॉडी में एक अंगूठी प्रतिक्रिया हैश-नक्शा की कमी है। समाधान println का उपयोग करने के बजाय एक अंगूठी प्रतिक्रिया का मूल्यांकन है। जब आप अपने मार्ग में println को कॉल करते हैं तो यह मानक प्रक्रिया को प्रिंट करता है जहां सर्वर प्रक्रिया चल रही है, जिसका एपीआई कॉल के जवाब से कोई लेना देना नहीं है।

(defroutes public-routes 
    (PUT "/something" {params :params} 
    {:status 200 
    :body (str "Params: " params)})) 

यह प्रतिक्रिया शरीर के रूप में Params: {"foo" "bar"} के साथ 200 प्रतिक्रिया उत्पन्न करता है।

मैं इस का उपयोग कर रहा अपने PUT मार्ग परीक्षण करने के लिए:

curl -X PUT -d "foo=bar" http://127.0.0.1:8080/something 
+0

मैं अभी भी गलत कर रहा हूं लेकिन मुझे डर है कि पूर्व मुझे संकलन समय त्रुटि देता है, बाद वाला एक ही खाली पैरा संग्रह बनाता है। – jamiei

+0

क्या आप एक गिस्ट या गिट रेपो के रूप में एक न्यूनतम पूर्ण परियोजना पोस्ट कर सकते हैं? – rplevy

+0

https://gist.github.com/1f74b817ca5d306af9f3 – jamiei

संबंधित मुद्दे