2012-01-08 4 views
5

मैं ट्यूटोरियल Mark McGranaghan REST Tutorial के माध्यम से काम कर रहा हूं, हालांकि मैं इसके बजाय नोएर का उपयोग करके ऐसा करने की कोशिश कर रहा हूं।क्लोजर नोयर जेसन

मैं नए आइटम जोड़ सकता हूं, हालांकि यह कभी भी PUT कमांड का शरीर नहीं लेता है।

मुझे लगता है कि मैं कैसे कथन कथन बनाने की कोशिश कर रहा हूं। मैं सोच रहा हूं कि {: कुंजी [आईडी attrs]} मुद्दा है, क्योंकि मैं इसे बताने की कोशिश कर रहा हूं कि जेसन सामग्री यूआरएल में है, जब यह नहीं, यह शरीर में है। क्या कोई सलाह दे सकता है कि मैं इसे नोयर डिफेज का उपयोग करके शरीर से कैसे प्राप्त करूं?

(पुट एक अलग ELEM फ़ाइल में है)

(defn put [id attrs] 
    (let [new-attrs (merge (get id) attrs)] 
    (swap! elems assoc id new-attrs) 
    new-attrs)) 

(defpage [:put "/elems/:id"] {:keys [id attrs]} 
    (json-response (elem/put id attrs))) 
+0

नोयर का कौन सा संस्करण आप उपयोग कर रहे हैं? – toofarsideways

+0

मैं 1.2.1 – Dale

+0

का उपयोग कर रहा हूं यदि यह अभी भी आपके लिए एक समस्या है और आपके पास इस झूठ बोलने का एक गलती है तो मैं शायद उस पर एक दरार ले सकता हूं ... मुझे लगता है कि यह एक सुंदर विशिष्ट समस्या है ... – toofarsideways

उत्तर

0

तो इन प्रपत्र मापदंड हैं? यदि हां, तो आपके जैसे परम को नष्ट करने से बस ठीक काम करना चाहिए। आप noir.request का उपयोग कर defpage के अंदर पूरा अनुरोध प्राप्त कर सकते हैं। मैं इसे देखकर देखता हूं कि इसमें क्या शामिल है। यह चीजों को महत्वपूर्ण रूप से स्पष्ट करना चाहिए।

2

आप गुजर रहे हैं, तो पोस्ट तो है कि काम करेंगे में "attrs = somevalue", लेकिन यदि आप सभी कुंजी-मान जोड़ों पर कब्जा करने की कोशिश कर रहे हैं, इस 1.3.0-beta1 में मेरे लिए काम करता है:

(defpage [:put "/elems/:id"] attrs 
    (response/json {:attrs attrs})) 

तो:

$ curl -H "Accept: application/json" -X PUT -d "foo=bar" http://localhost:8080/elems/123 
=> {"attrs":{"id":"123","foo":"bar"}} 
1

उपयोग क्रिस ग्रेंजर के JSON-पार्स करने here से मिडलवेयर समारोह, और के रूप में वर्णित here JSON डेटा प्राप्त करने के लिए इसका इस्तेमाल करते हैं।

आपके मामले में यह पहली बार की तरह

(defpage [:put "/elems/:id"] {{:keys [attr1 attr2 attr3]} :backbone } 
     "OK") 

गौर करेंगे लेकिन आप सिर्फ इतना है कि "रीढ़" जोड़ने की जरूरत है (मैं व्यक्तिगत रूप से यह करने के लिए "json-पैरामीटर" का नाम बदलकर) मिडलवेयर।