Wie poste ich einen neuen Knoten?


16

Ich habe auf viele Links verwiesen, einschließlich der folgenden:

Ich habe mehrere Möglichkeiten ausprobiert, um einen neuen Knoten auf einer Drupal-Site zu veröffentlichen, bin jedoch gescheitert. Ich habe ein Beispiel-CCK zum Speichern von Studentendaten mit Name, Alter, Geschlecht, Geburtsdatum erstellt und eine Liste hinzugefügt.

Ich habe das Modul Dienste (D7) installiert und konfiguriert und einen Dienstendpunkt bei Diensten erstellt.
Wie erwartet ist GET der einfachste Weg, um Details eines Knotens in JSON abzurufen. http://localhost/drupal/services/nodeeinfach alle Knoten aufgelistet.

Ich kann immer noch nicht herausfinden, wie die POST- Methode verwendet wird.

  1. Ich möchte nach den Schülern suchen, deren Name John enthält . Ich habe es versucht localhost/drupal/services/node&node[name]=john. Ich habe das POST Man- Plugin für Chrome ohne Erfolg verwendet. Ich habe auch andere Möglichkeiten ausprobiert.

  2. Ich habe erfolglos versucht, einen neuen Schüler zur Site hinzuzufügen.

Kann mich jemand anleiten, obiges gut zu machen?

UPDATE:

Ich habe versucht, neue Knoten vom Typ Artikel hinzuzufügen . Es hat gut funktioniert. aber wenn ich versuche, Knoten des Typs Abteilung CCK hinzuzufügen, zeigt es " s: 22:" CSRF-Validierung fehlgeschlagen "; " Hier sind die Screenshots

Ich habe den Link https://drupal.org/node/2013781 durchlaufen

Ich folgte session = session_name = session_id, aber ich erhalte immer noch eine Fehlermeldung.
Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben


Was passiert, wenn Sie versuchen, einen Knoten zu POSTEN? Erhalten Sie eine Fehlermeldung? Wenn ja, was ist das?
Gaelan

Antworten:


22

Hoffe das wird dir helfen,

Für Drupal 7

Benutztes Werkzeug:

  • Firefox Poster- Add-On für Tests und Debugging. Es kann auch ein anderes Add-On geben. Aber für dieses Beispiel verwende ich das Firefox-Add-On.
  • Hilfestellung beim Bearbeiten und Überprüfen der JSON-Daten, die Sie verwenden können
    • Bearbeiten Sie die JSON-Daten über diesen Link
    • Überprüfen Sie die JSON-Daten über diesen Link

HTTP-Anfragen

  • Für die HTTP-Anfragen benötigen Sie das Firefox-Add-On POSTER .

  • Zwei häufig verwendete Methoden für eine Anfrage-Antwort zwischen einem Client und einem Server sind:

    • BEKOMMEN
    • POST
  • Nachdem das Add-On heruntergeladen wurde. Öffnen Sie Firefox -> Extras -> Poster

    Bildbeschreibung hier eingeben

  • Stellen Sie sicher, dass die Sitzungsauthentifizierung aktiviert ist . Nachdem die Dienste ordnungsgemäß konfiguriert wurden, sollten Sie sich anmelden , bevor Sie den Knoten erstellen . Einmal eingeloggt können Sie die Knoten erstellen.

  • Verwenden Sie für die Anmeldung die POST-Methode mit der URL " http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login"

    Bildbeschreibung hier eingeben

  • Wenn es sich um einen gültigen Benutzer handelt , werden Benutzerdetails mit Sitzungs-ID und Name zurückgegeben . Wenn es nicht gültig ist, wird der Zugriff verweigert

    Bildbeschreibung hier eingeben

  • Durch Verwendung des Sitzungsnamens und der ID im POST HEADER können neue Knoten erstellt werden

    Bildbeschreibung hier eingeben

  • Nachdem Sie den HEADER hinzugefügt haben, müssen Sie eine HTTP-POST-Anforderung stellen und sicherstellen, dass der Benutzer über die Berechtigungen zum Erstellen eines Knotens verfügt.

    Bildbeschreibung hier eingeben

  • Wenn der Knoten erstellt wurde, erhalten Sie die Antwort mit der Knotenverknüpfung

    Bildbeschreibung hier eingeben

HINWEIS: Wenn Sie die Antwort in JSON erhalten möchten, sollten Sie .json immer am Ende der URL anhängen. zB http://XXXXXXXX.com/test/endpoint/user.json ODER http://XXXXXXXX.com/test/endpoint/node.json ODER http://XXXXXXXX.com/test/endpoint/user/user_id .json ODER http://XXXXXXXX.com/test/endpoint/node/node_id.json


Tut mir leid, ich habe die URL-codierte Formularoption im Servicemodul deaktiviert. und hier ist die Antwort 401: Nicht autorisiert: CSRF-Autorisierung fehlgeschlagen. Was könnte das verursachen? Vielen Dank
Ramaraju.d

hi @inizio, kann ich wissen, auf welcher Basis Sie Sitzungswert in HEADERS zugewiesen haben. Kannst du das klarstellen? Beispiel: Die Session-ID, die ich erhalten habe, lautet SESS29af1facda0a866a687d5055f2fade2c, aber in Ihrer Antwort ist sie länger!
Ramaraju.d

Der Sitzungswert in HEADERS besteht aus Sitzungsname und Sitzungs-ID. Das heißt, session ist die Variable und ihr Wert besteht aus session_name = session_id. session = (session_name = session_value)
inizio

Es heißt 401: Nicht autorisiert: CSRF-Validierung fehlgeschlagen. Ich gab Folgendes als Überschriften Name = Sitzungswert = SESS29af1facda0a866a687d5055f2fade2c = gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d

Ja, es hat funktioniert. Das einzige Problem ist jedoch, dass im Artikel-CCK title, field_names, body, aber nur title gespeichert wird und node erstellt wird, body und names jedoch leer sind. Wie kann man das überwinden?
Ramaraju.d

7

Für Drupal 7 und Services 7.x-3.x

Schritt 1: Stellen Sie eine Post-Anfrage an user.loginresource mit Ihrem Benutzernamen und Passwort.

Wenn die Anmeldung erfolgreich ist, erhalten Sie ein Antwortobjekt mit 4 Eigenschaften:

  • Sitzungsname
  • sessid
  • Zeichen
  • Benutzer (Objekt)

Screenshot von Google Chrome Briefträger Screenshot von Google Chrome Briefträger

Schritt 2: Stellen Sie eine Post-Anfrage an nodemit 2 Headern

  • Cookie: [session_name] = [sessid]
  • X-CSRF-Token: [Token]

Screenshot von Google Chrome Briefträger Screenshot von Google Chrome Briefträger


Ich habe versucht, Benutzer <Endpunkt> /user.login, aber es ist nicht repsonse: prntscr.com/gru4y6 - nicht sicher, was ich falsch mache.
Patoshi パ パ シ

0

Wenn Sie das tun POST an die REST - API , dann werden Sie alles in setzen müssen POST - Daten , nicht zu URL . In Postman können Sie festlegen, dass die Anforderung gesendet werden soll, x-www-form-urlencodedund anschließend Ihre Datenwerte hinzufügen. Vergessen Sie nicht, Status, Benutzer-ID, Sprache, Typ, Titel und dann die zusätzlichen Werte hinzuzufügen . Die Ressourcen-URL sollte nur sein HOST/REST_API_PATH/node.


1
Etwas verwirrend. Ok, kannst du mir sagen, was die Parameter für das Erstellen eines neuen Artikels sein sollen? Wenn Sie nichts dagegen haben, können Sie ein Beispiel oder einen Link posten, damit ich ein klares Konzept haben kann!
Ramaraju.d
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.