web-dev-qa-db-fra.com

Configuration Drupal 8 REST Post Request

J'ai des problèmes pour envoyer une demande POST pour créer un nœud avec Drupal 8 Core REST. Voici les étapes que j'ai parcourues plusieurs fois. Notez que ces des étapes sont en cours pour produire un exemple de travail, je ne suis pas encore préoccupé par les implications pour la sécurité.

  1. Installer la dernière version de drupal 8
  2. Activer tous les modules de services Web de base (HAL, authentification de base HTTP, services Web RESTful, sérialisation)
  3. Accédez à la page des autorisations. Recherchez les autorisations des services Web RESTful et autorisez la suppression, l'obtention, le correctif et la publication pour tous les utilisateurs. Trouver Node autorisations d'article, permettre de créer, supprimer et modifier pour tous les utilisateurs.
  4. Lancez Dev HTTP Client dans Chrome. Saisissez la demande suivante:

enter image description here Après avoir appuyé sur Envoyer, je reçois le message suivant qui, selon moi, devrait être un 201 et non un 200 si un nœud devait être créé avec succès. Je pense que la partie REST fonctionne, c'est juste que je n'arrive pas à comprendre comment obtenir POST pour créer un nœud).

enter image description here

J'ai du mal à trouver de la documentation sur la création de demandes de publication à Drupal 8 REST. Un aperçu de la façon de construire ces demandes afin que Drupal puisse les analyser avec succès serait très utile.

6
Emanegux

J'ai posté la solution sur le problème (identique) sur drupal.org: https://www.drupal.org/node/2472451#comment-9903259 Voir également la capture d'écran du client Dev HTTP jointe dans ce commentaire .

Fondamentalement, il y a quelques erreurs dans votre exemple:

  • le point de terminaison est/entité/nœud
  • ajouter un en-tête Accept "application/json"
  • ajouter un jeton CSRF (qui peut être demandé via/rest/session/token)
1
askibinski

Comme je rencontrais encore beaucoup de 403 Forbidden erreurs je vais résumer ma solution globale ici (Drupal 8.0.1):

1.) Installation et configuration

Activer tous les modules de services Web principaux (HAL, authentification de base HTTP, services Web RESTful, sérialisation

Activez les autorisations pertinentes des services Web RESTful et pour la création des nœuds appropriés.

2.) Obtenez un jeton CSRF:

GET http://your-drupal8/rest/session/token

3.) POST pour créer un nouveau nœud

POST http://your-drupal8/entity/node?_format=hal+json

Notez que l'URL de POST semble être /entity/node plutôt que /node

En-têtes:

Authorization: Basic QWRt...
X-CSRF-Token: zCf...

Les données

{
"title": [
  { "value": "atest2" }
],
"type": [
  { "target_id": "article" }
],
"_links": {
  "type": { "href": "http://your-drupal8/rest/type/node/article" }
}
}
6
sleidig

J'ai bifurqué le module d'origine et corrigé ce bug et la demande de pull. J'espère accepter cette branche. Vous pouvez le télécharger dans https://github.com/setali/drupal_cors

0
user3000253