Yeni bir düğümü nasıl POST yapabilirim?


16

Aşağıdakiler dahil birçok bağlantıya başvurdum:

Bir Drupal sitesine yeni bir düğüm POST için birkaç yol denedim, ancak başarısız oldu. Öğrencilere ad, yaş, cinsiyet, DOB ile veri depolamak için örnek bir CCK oluşturdum ve bir liste ekledim.

Hizmetler modülünü (D7) yükleyip yapılandırdım ve hizmetlerde bir hizmet bitiş noktası oluşturdum.
Beklendiği gibi, GET, JSON'daki bir düğümün ayrıntılarını almanın en kolay yoludur. http://localhost/drupal/services/nodebasitçe tüm düğümleri listeledi.

Hala POST yöntemini nasıl kullanacağımı anlayamıyorum .

  1. Adı john olan öğrencileri aramak istiyorum . Denedim localhost/drupal/services/node&node[name]=john. Ben kullanılan POST Adam başarılı olamadı Chrome için eklenti. Başka yolları da denedim.

  2. Siteye başarılı olmadan yeni bir öğrenci eklemeyi denedim.

Yukarıdaki işler iyi yapmak için kimse bana rehberlik edebilir?

GÜNCELLEME :

Yeni makale türü düğümleri eklemeyi denedim . İyi çalıştı. ama tip düğümleri eklemeye çalışırken Bölümü CCK " s: 22:" CSRF doğrulama başarısız oldu "; " İşte ekran görüntüleri

Https://drupal.org/node/2013781 bağlantısından geçtim

Ben session = session_name = session_id izledim ama hala bir hata alıyorum.
resim açıklamasını buraya girin resim açıklamasını buraya girin resim açıklamasını buraya girin


Bir düğümü POST yapmaya çalıştığınızda ne olur? Hata mesajı alıyor musunuz? Eğer öyleyse, nedir?
Gaelan

Yanıtlar:


22

Umarım bu sana yardımcı olur,

Drupal 7 için

Kullanılan aletler:

  • Testler ve hata ayıklama yapmak için Firefox Poster eklentisi. Başka eklenti de olabilir. Ancak bu örnek için Firefox eklentisini kullanıyorum.
  • JSON verilerinin düzenlenmesine ve doğrulanmasına yardımcı olmak için kullanabilirsiniz

HTTP istekleri

  • HTTP istekleri yapmak için Firefox eklentisi POSTER'i kullanmanız gerekir .

  • İstemci ve sunucu arasındaki istek yanıtı için yaygın olarak kullanılan iki yöntem şunlardır:

    • ALMAK
    • İLETİ
  • Eklenti İndirildikten Sonra. Açık Firefox -> Araçlar -> Poster

    resim açıklamasını buraya girin

  • Oturum kimlik doğrulamasını etkinleştirdiğinizden emin olun . Hizmetler düzgün yapılandırıldıktan sonra, düğümü oluşturmadan önce oturum açmalısınız . Giriş yaptıktan sonra düğümleri oluşturabilirsiniz.

  • Giriş için POST yöntemini kullanın, URL: - http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login

    resim açıklamasını buraya girin

  • Bir ise geçerli bir kullanıcı o zaman dönecektir kullanıcı bilgilerini ile oturum kimliği ve adı . Geçerli değilse Erişim reddedilir

    resim açıklamasını buraya girin

  • POST HEADER'da Oturum adı ve kimliği kullanarak yeni düğümler oluşturabiliriz

    resim açıklamasını buraya girin

  • HEADER'ı ekledikten sonra, HTTP POST isteği yapmanız ve kullanıcının düğüm oluşturma izinlerine sahip olduğundan emin olmanız gerekir.

    resim açıklamasını buraya girin

  • Düğüm oluşturulursa, düğüm bağlantısıyla yanıt alırsınız

    resim açıklamasını buraya girin

NOT: Yanıt JSON'da istiyorsanız, URL'nin sonuna her zaman .json eklemeniz gerekir. ör. http://XXXXXXXX.com/test/endpoint/user.json VEYA http://XXXXXXXX.com/test/endpoint/node.json VEYA http://XXXXXXXX.com/test/endpoint/user/user_id .json VEYA http://XXXXXXXX.com/test/endpoint/node/node_id.json


Maalesef, hizmetler modülündeki form url kodlu seçeneğin işaretini kaldırdım. ve işte 401 yanıtı: Yetkisiz: CSRF yetkilendirmesi başarısız oldu. buna ne sebep olabilir? Çok teşekkürler
Ramaraju.d

hi @inizio HEADERS oturum değerini hangi temelde atamış olabilir? Anlatabilir misin. Örnek, ben aldım sessionId SESS29af1facda0a866a687d5055f2fade2c ama cevabınızda daha fazla uzunluk var!
Ramaraju.d

HEADERS içindeki oturum değeri session_name ve session_id öğelerinden oluşur. yani., oturum değişkendir ve değeri session_name = session_id öğesinden oluşur. oturum = (oturum_adı = oturum_değeri)
inizio

401: Yetkisiz: CSRF doğrulaması başarısız oldu. Ben üstbilgi adı = oturum değeri = SESS29af1facda0a866a687d5055f2fade2c = gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d

Evet işe yaradı. Ancak tek sorun, Madde CCK'nın başlığı, alan_adı, gövdesi var, ancak yalnızca başlık kaydediliyor ve düğüm oluşturuluyor, ancak gövde ve ad alanı boş. Bunun üstesinden gelmek.
Ramaraju.d

7

Drupal 7 ve Servisleri 7.x-3.x için

1. Adım:user.login Kullanıcı adınız ve şifrenizle kaynak oluşturmak için bir yayın isteği gönderin .

Giriş başarılı olursa, 4 özellikli bir yanıt nesnesi alırsınız:

  • session_name
  • sessid
  • jeton
  • kullanıcı (nesne)

Google Chrome Postacı'dan ekran görüntüsü Google Chrome Postacı'dan ekran görüntüsü

2. Adım:node 2 başlıkla bir yayın isteği gönderin

  • Çerez: [session_name] = [sessid]
  • X-CSRF-Jetonu: [simge]

Google Chrome Postacı'dan ekran görüntüsü Google Chrome Postacı'dan ekran görüntüsü


Ben kullanıcı <endpoint> /user.login ama onun repsonse denedim: prntscr.com/gru4y6 - ben ne yanlış yapıyor emin değilim.
Patoshi パ ト シ

0

Bunu yaparsanız POST için REST API sonra içine her şeyi koymak zorunda kalacak POST verilerine , değil URL'ye . In Postman'a Eğer türü daha için yazılan isteği ayarlayabilir x-www-form-urlencodedve aşağıdaki size veri değerlerini ekleyebilmeniz. Durum, kullanıcı kimliği, dil, tür, başlık ve ardından ekstra değerler eklemeyi unutmayın . Kaynak URL yalnızca olmalıdır HOST/REST_API_PATH/node.


1
Biraz kafa karıştırıcı. Tamam, bana yeni bir makale oluşturmak için parametrelerin ne olması gerektiğini söyleyebilir misiniz? Eğer sakıncası yoksa, net bir konsepte sahip olabilmem için bir örnek veya bağlantı gönderebilirsin!
Ramaraju.d
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.