सेवाएं 3.x और JSON के साथ टिप्पणियां और नोड बनाना


10

मुझे POST to /comment.json को पहचानने के लिए सेवाएं प्राप्त करने में समस्या हो रही है। मेरे पास नोड्स बनाने के साथ भी ऐसा ही मुद्दा है।

निम्नलिखित त्रुटि है जो मुझे मिलती है: HTTP / 1.1 406 नहीं स्वीकार्य: लापता तर्क तर्क टिप्पणी आवश्यक है

यह संदेश फ़ाइल से आता है: /services/server/rest_server/includes/RESTServer.inc विशेष रूप से, लाइनें:

  elseif (!isset($info['optional']) || !$info['optional']) {
    return services_error(t('Missing required argument !arg', array(
      '!arg' => $info['name'],
    )), 406);
  }

मूल रूप से, यह लगता है कि "टिप्पणी" तर्क गायब है (और यह वैकल्पिक नहीं है)।

यह JSON के कई बिट्स में से एक है, जो मैंने इसे दिया है (एक टिप्पणी को नोड 8801 पर पोस्ट करना)

{name:"test",language:"und",cid:"0",pid:"0",uid:"17593",nid:"8801",
comment:{subject:"Subject of the comment, if not entered it will be auto-generated",
comment_body:
{und:[
[{value:"value of the field comment in the comment, remember that in D7 we can create fields for comments too", format: "full_html"}]
]}}}

यह पूरी तरह से वैध है (अन्य ऑनलाइन JSON चेक के आधार पर)। यह इस बात से भी मेल खाता है कि मैं सेवाओं के उदाहरणों में /services/test/functional/ServivesResourceCommentTest.test पर क्या देखता हूं

हालाँकि, मुझे हमेशा एक ही त्रुटि संदेश मिलता है। यह समान लगता है: Drupal 7 सेवाएं json नोड ऑब्जेक्ट

जो कि अनसुलझा भी है। क्या कोई मुझे उचित JSON प्रारूपण में मदद कर सकता है? वास्तव में, मैं बस यही करना चाहता हूँ:

{ nid : 8081 , uid : 17593 ,comment:{comment_body:"test",subject:"test"}}

मेरे http हेडर ठीक लगते हैं और उपयोगकर्ता / लॉगिन ने ठीक काम किया है।

जवाबों:


5

निम्नलिखित JSON आपको एक टिप्पणी पोस्ट करने की आवश्यकता न्यूनतम प्रतीत होती है:

{
  "nid":"1",
  "subject":"Comment Subject Text",
  "comment_body":{
    "und":[{
      "value":"Comment body text"
    }]
  }
}

चूंकि कोई उपयोगकर्ता नहीं है, इसलिए इस "example.com/node/1" पर टिप्पणी करने की आवश्यकता है और अनाम उपयोगकर्ताओं के लिए टिप्पणियों को पोस्ट करने के लिए अनुमतियां सेट करने की आवश्यकता है।


2

पता चलता है कि मैं प्रमाणीकरण के बिना नोड्स / टिप्पणियां बनाने की कोशिश कर रहा था, और साइट ने अनाम उपयोगकर्ताओं को नोड्स / टिप्पणियां बनाने की अनुमति नहीं दी। एक बार जब मैंने सेशन ऑर्टोर चालू कर दिया, तो ठीक से लॉग इन किया, चीजों ने ठीक काम किया।


1
तो आप Drupal सेवाओं में सत्र नियम पर या अपने REST क्लाइंट में बदल गए? क्या आपने कुछ त्वरित सुझाव दिए कि आपने यह कैसे किया?
ted.strauss

2

क्या आप मुझे बता सकते हैं कि आप किस URL पर यह json string पोस्ट करेंगे। मैं कुछ प्रलेखन के लिए वेब पर सब देख रहा हूं कि सेवाओं का उपयोग करके नोड पर टिप्पणी कैसे बनाई जाए 3. इस मॉड्यूल पर प्रलेखन पूरी तरह से कमी है। मैंने पोस्ट करने की कोशिश की है:

example.com/api/node/{nid}/comments.json

example.com/api/comment.json

example.com/api/comment/create.json

कुछ भी काम नहीं लगता। मुझे हमेशा "404 नहीं मिला: नियंत्रक नहीं मिल सका"

संपादित करें: जैसे ही मैंने यह पोस्ट किया मुझे यह काम करने के लिए मिला। अगर यह किसी और की मदद करेगा तो आप अपने json string को पोस्ट कर सकते हैं:

example.com/api/comment.json

यदि आप परीक्षण करने के लिए पोस्टर का उपयोग कर रहे हैं, तो आवेदन / जसन के लिए सामग्री प्रकार निर्धारित करना सुनिश्चित करें। Jquery का उपयोग करते समय सुनिश्चित करें कि आप डेटा टाइप करें: 'json'।


2

निम्नलिखित प्रारूप में नोड्स और टिप्पणियों को बनाने और अपडेट करने के लिए कुछ उदाहरण यहां दिए गए हैं:

  • HTTP विधि
  • सामग्री प्रकार
  • URL पथ
  • डेटा भेजने के लिए

नोड बनाएँ

  • पद
  • ContentType: एप्लिकेशन / json
  • ? Q = endpoint / node.json

    { "Type": "लेख", "शीर्षक": "t8yZUfX2it", "भाषा": "und"}

नोड अपडेट

  • डाल
  • ContentType: एप्लिकेशन / json
  • ? Q = endpoint / नोड / 123.json

    { "नोड": { "एनआईडी": "123", "शीर्षक": "9AjrXJhWMI", "भाषा": "und"}}

टिप्पणी बनाएँ

  • पद
  • ContentType: एप्लिकेशन / json
  • ? Q = endpoint / comment.json

    {"विषय": "liJmJfpqMX", "comment_body": {"und": [{"value": "9DyaNZi3lA"}]}, "nid": "18"}

टिप्पणी अपडेट करें

  • डाल
  • ContentType: एप्लिकेशन / x-www-form-urlencoded
  • ? Q = endpoint / टिप्पणी / 456.json

    {cid: 456, "विषय": "hzU27R6daE", "comment_body": {"und": [{"value": "BqZU5DwArD"}]}, "nid": "18"}


1
यह अच्छा काम करता है। स्वीकृत उत्तर होना चाहिए! याद रखने वाली एक बात यह है कि यदि आप क्रोम पोस्टमैन से परीक्षण कर रहे हैं तो अपने हेडर में "कंटेंट-टाइप" मूल्य: "एप्लिकेशन / जसन" जोड़ें। यह एक और अमूल्य संसाधन है: https://www.drupal.org/node/1447020
longboardnode

1

मैं भी इसी तरह की समस्याओं हो रही थी जब सिर्फ फ़ायरफ़ॉक्स प्लगइन पोस्टर के साथ परीक्षण। यह पता चला है कि यह काफी हद तक अतिरिक्त व्हाट्सएप और कुछ अन्य सरल स्वरूपण (जैसे बच) जो यह कर रहा था। यहाँ एक सूची है जो मेरे अपने परीक्षणों में काम करता है जो मुझे चाहिए:

सृजित उपयोगकर्ता कार्य = समापन बिंदु / उपयोगकर्ता

{"name":"myusername","pass":"12345678","mail":"myemail@example.com","status":"1"}

लॉगिन कार्य = समापन बिंदु / उपयोगकर्ता / लॉगिन

{"username":"admin","password":"admin"}

बनाएँ फ़ाइल वर्क्स = समापन बिंदु / फ़ाइल

{"uid":"1","filesize":"99999","filename":"whatever.bin","file":"BASE64_ENCODED_DATA"}

बनाएँ नोड कार्यों = समापन बिंदु / नोड

{"title":"testrest1","type":"dl","field_dl_file":{"und":[{"fid":582}]},"uid":"1","language":"und"}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.