Comment puis-je POSTER un nouveau nœud?


16

J'ai référé de nombreux liens dont les suivants:

J'ai essayé plusieurs façons de POSTER un nouveau nœud sur un site Drupal, mais j'ai échoué. J'ai créé un exemple de CCK pour stocker les données des étudiants avec le nom, l'âge, le sexe, le DOB, et ajouté une liste.

J'ai installé et configuré le module Services (D7) et créé un point de terminaison de service au niveau des services.
Comme prévu, GET est le moyen le plus simple d'obtenir les détails d'un nœud en JSON. http://localhost/drupal/services/nodeénumère simplement tous les nœuds.

Je n'arrive toujours pas à comprendre comment utiliser la méthode POST .

  1. Je voudrais rechercher les étudiants dont le nom contient john . J'ai essayé localhost/drupal/services/node&node[name]=john. J'ai utilisé le plugin POST Man pour Chrome sans succès. J'ai également essayé d'autres moyens.

  2. J'ai essayé d'ajouter un nouvel étudiant au site sans succès.

Quelqu'un peut-il me guider pour que tout fonctionne correctement?

MISE À JOUR :

J'ai essayé d'ajouter de nouveaux nœuds de type article . Cela a bien fonctionné. mais quand j'essaye d'ajouter des noeuds de type Department CCK Il montre " s: 22:" La validation CSRF a échoué "; " Voici les captures d'écran

J'ai parcouru le lien https://drupal.org/node/2013781

J'ai suivi session = session_name = session_id mais j'obtiens toujours une erreur.
entrez la description de l'image ici entrez la description de l'image ici entrez la description de l'image ici


Que se passe-t-il lorsque vous essayez de POSTER un nœud? Recevez-vous un message d'erreur? Si oui, c'est quoi?
Gaelan

Réponses:


22

J'espère que cela vous aidera,

Pour Drupal 7

Les outils utilisés:

  • Module complémentaire Firefox Poster pour effectuer des tests et le débogage. Il peut également y avoir d'autres modules complémentaires. Mais pour cet exemple, j'utilise le module complémentaire Firefox.
  • Pour faciliter la modification et la validation des données JSON, vous pouvez utiliser
    • Modifiez les données JSON à l'aide de ce lien
    • Validez les données JSON à l'aide de ce lien

Demandes HTTP

  • Pour effectuer les requêtes HTTP, vous devez utiliser le module complémentaire Firefox POSTER .

  • Deux méthodes couramment utilisées pour une demande-réponse entre un client et un serveur sont:

    • AVOIR
    • PUBLIER
  • Une fois le module complémentaire téléchargé. Ouvrez Firefox -> Outils -> Affiche

    entrez la description de l'image ici

  • Assurez-vous d'activer l' authentification de session . Une fois les services correctement configurés, avant de créer le nœud, vous devez vous connecter . Une fois connecté, vous pouvez créer les nœuds.

  • Pour la connexion, utilisez la méthode POST, avec l'URL comme - http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login

    entrez la description de l'image ici

  • S'il s'agit d'un utilisateur valide, il renverra les détails de l'utilisateur avec l' ID et le nom de la session . S'il n'est pas valide, il retournera Accès refusé

    entrez la description de l'image ici

  • En utilisant le nom et l'ID de la session dans le POST HEADER, nous pouvons créer de nouveaux nœuds

    entrez la description de l'image ici

  • Maintenant, après avoir ajouté l'en-tête, vous devez effectuer une requête HTTP POST et vous assurer que l'utilisateur doit avoir les autorisations pour créer un nœud.

    entrez la description de l'image ici

  • Si le nœud est créé, vous obtiendrez la réponse avec le lien de nœud

    entrez la description de l'image ici

REMARQUE: Si vous souhaitez que la réponse soit en JSON, vous devez toujours ajouter .json à la fin de l'URL. par exemple., http://XXXXXXXX.com/test/endpoint/user.json OU http://XXXXXXXX.com/test/endpoint/node.json OU http://XXXXXXXX.com/test/endpoint/user/user_id .json OU http://XXXXXXXX.com/test/endpoint/node/node_id.json


Désolé, j'ai décoché l'option de formulaire codé par URL dans le module de services. et voici la réponse 401: Non autorisé: l'autorisation CSRF a échoué. qu'est-ce qui pourrait causer cela? Merci beaucoup
Ramaraju.d

salut @inizio puis-je savoir sur quelle base avez-vous attribué la valeur de session dans HEADERS. Pouvez-vous être clair? Exemple, le sessionId que j'ai obtenu est SESS29af1facda0a866a687d5055f2fade2c mais dans votre réponse, il a plus de longueur!
Ramaraju.d

La valeur de session dans HEADERS se compose de session_name et session_id. c'est-à-dire, session est la variable et sa valeur consiste en session_name = session_id. session = (session_name = session_value)
inizio

Il dit 401: Non autorisé: la validation CSRF a échoué. J'ai donné ce qui suit comme nom de headers = valeur de la session = = SESS29af1facda0a866a687d5055f2fade2c gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d

Oui ça a marché. Mais le seul problème, l'article CCK a le titre, field_names, body mais seul le titre est enregistré et le nœud est créé, mais le corps et le champ des noms sont vides. Comment surmonter cela.
Ramaraju.d

7

Pour Drupal 7 et Services 7.x-3.x

Étape 1: émettez une demande de publication de user.loginressource avec votre nom d'utilisateur et votre mot de passe.

Si la connexion réussit, vous obtiendrez un objet de réponse avec 4 propriétés:

  • nom_session
  • sesside
  • jeton
  • utilisateur (objet)

Capture d'écran de Google Chrome Postman Capture d'écran de Google Chrome Postman

Étape 2: émettre une demande de publication nodeavec 2 en-têtes

  • Cookie: [nom_session] = [sessid]
  • Jeton X-CSRF: [jeton]

Capture d'écran de Google Chrome Postman Capture d'écran de Google Chrome Postman


J'ai essayé d'utiliser <endpoint> /user.login mais ce n'est pas répsonse: prntscr.com/gru4y6 - je ne sais pas ce que je fais mal.
Patoshi パ ト シ

0

Si vous effectuez un POST sur l' API REST, vous devrez tout mettre en données POST , pas en URL . Dans Postman, vous pouvez définir la demande pour publier, puis saisir x-www-form-urlencodedet en dessous que vous pouvez ajouter vos valeurs de données. N'oubliez pas d'ajouter le statut, l'uid, la langue, le type, le titre , puis les valeurs supplémentaires. L'URL de la ressource doit être uniquement HOST/REST_API_PATH/node.


1
Peu déroutant. Ok pouvez-vous me dire quels devraient être les paramètres pour créer un nouvel article.? Si cela ne vous dérange pas, pouvez-vous publier un exemple ou un lien afin que je puisse avoir un concept clair!
Ramaraju.d
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.