Services 3.x ve JSON ile yorum ve düğüm oluşturma


10

/Comment.json adresine bir POST tanımak için hizmet almakta sorun yaşıyorum. Düğüm oluşturma konusunda da benzer bir sorunum var.

Aldığım hata şu: HTTP / 1.1 406 Kabul Edilemez: Gerekli bağımsız değişken yorumu eksik

Bu ileti şu dosyadan gelir: /services/server/rest_server/includes/RESTServer.inc Özellikle satırlar:

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

temel olarak, "yorum" argümanının eksik olduğunu düşünüyor (ve isteğe bağlı değil).

Bu, verdiğim JSON'un birçok bitinden biri (8801 düğümü için bir yorum gönderme)

{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"}]
]}}}

Mükemmel bir şekilde geçerlidir (diğer çevrimiçi JSON kontrollerine dayanarak). Ayrıca /services/test/functional/ServivesResourceCommentTests.test adresindeki hizmet testi örneklerinde gördüklerimle eşleşiyor

ancak, her zaman aynı hata iletisini alıyorum. Bu şuna benzer: Drupal 7 hizmetleri json düğüm nesnesi

bu da çözülemedi. Birisi bana uygun JSON biçimlendirmesi konusunda yardımcı olabilir mi? Gerçekten, tek yapmak istediğim şey şöyle aktarmak:

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

http başlıkları iyi görünüyor ve kullanıcı / giriş iyi çalıştı.

Yanıtlar:


5

Aşağıdaki JSON, yorum göndermeniz için gereken minimum düzeydedir:

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

Kullanıcı olmadığından, bu "example.com/node/1" adresindeki yorumun açık olması ve anonim kullanıcıların yorum yayınlama izinlerinin ayarlanması gerekir.


2

Kimlik doğrulama olmadan düğüm / yorum oluşturmaya çalıştığım anlaşılıyor ve site anonim kullanıcıların düğüm / yorum oluşturmasına izin vermedi. Oturum kimlik doğrulamasını açtığımda, düzgün giriş yaptıktan sonra işler yolunda gitti.


1
Drupal hizmetlerinde veya REST istemcinizde oturum kimlik doğrulamasını açtınız mı? Bunu nasıl yaptığınıza dair hızlı ipuçları verebilir misiniz?
ted.strauss

2

Bana bu json dizesini hangi URL'ye göndereceğinizi söyleyebilir misiniz? Ben hizmetleri 3 kullanarak bir düğüm hakkında bir yorum oluşturmak için nasıl bazı belge arıyorum. Bu modül üzerindeki belgeler tamamen eksik. Şuraya göndermeyi denedim:

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

example.com/api/comment.json

example.com/api/comment/create.json

Hiçbir şey işe yaramıyor. Her zaman "404 Bulunamadı: Denetleyici bulunamadı"

EDIT: Ben bunu en kısa sürede işe ben aldım. Başka birine yardımcı olacaksa, json dizenizi şu adrese gönderin:

example.com/api/comment.json

Test etmek için Poster kullanıyorsanız içerik türünü application / json olarak ayarladığınızdan emin olun. Jquery kullanırken dataType: 'json' ayarını yaptığınızdan emin olun.


2

Düğümleri ve yorumları aşağıdaki biçimde oluşturmak ve güncellemek için bazı örnekler:

  • HTTP yöntemi
  • İçerik türü
  • URL Yolu
  • Gönderilecek Veriler

Düğüm Oluşturma

  • İLETİ
  • ContentType: uygulama / json
  • ? Q = nokta / node.json

    { "Type": "makale", "title": "t8yZUfX2it", "dil": "und"}

Düğüm Güncellemesi

  • KOYMAK
  • ContentType: uygulama / json
  • ? Q = nokta / düğüm / 123.json

    { "Düğüm": { "nid": "123", "title": "9AjrXJhWMI", "dil": "und"}}

Yorum Oluştur

  • İLETİ
  • ContentType: uygulama / json
  • ? Q = nokta / comment.json

    {"Subject": "liJmJfpqMX", "comment_body": {"und": [{"value": "9DyaNZi3lA"}]}, "nid": "18"}

Yorum Güncelleme

  • KOYMAK
  • ContentType: application / x-www-form-urlencoded
  • ? Q = uç / Yorum / 456.json

    {cid: 456, "konu": "hzU27R6daE", "comment_body": {"und": [{"değer": "BqZU5DwArD"}]}, "nid": "18"}


1
Bu iyi çalışıyor. Kabul edilen cevap olmalı! hatırlanması gereken bir şey, Chrome postacısından test ediyorsanız başlığınıza "Content-Type" value: "application / json" anahtarını eklemektir. Bu başka bir paha biçilmez kaynak: https://www.drupal.org/node/1447020
longboardnode

1

Firefox eklentisi posteri ile test ederken bile benzer sorunlar alıyordum. Oldukça basit bir şekilde ekstra boşluklar ve bunu yapan diğer basit biçimlendirme (kaçışlar gibi) olduğu ortaya çıktı. İşte ihtiyacım olan şey için kendi testlerimde neyin işe yaradığını gösteren bir liste:

KULLANICI İŞLERİ OLUŞTUR = son nokta / kullanıcı

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

GİRİŞ İŞLERİ = bitiş noktası / kullanıcı / giriş

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

DOSYA İŞLERİ OLUŞTUR = bitiş noktası / dosya

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

NODE İŞLERİ OLUŞTUR = bitiş noktası / düğüm

{"title":"testrest1","type":"dl","field_dl_file":{"und":[{"fid":582}]},"uid":"1","language":"und"}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.