J'ai du mal à obtenir des services pour reconnaître un POST vers /comment.json. J'ai également un problème similaire avec la création de nœuds.
Voici l'erreur que j'obtiens: HTTP / 1.1 406 non acceptable: commentaire d'argument requis manquant
Ce message provient du fichier: /services/server/rest_server/includes/RESTServer.inc Plus précisément, les lignes:
elseif (!isset($info['optional']) || !$info['optional']) {
return services_error(t('Missing required argument !arg', array(
'!arg' => $info['name'],
)), 406);
}
fondamentalement, il semble penser que l'argument "commentaire" est manquant (et ce n'est pas facultatif).
Ceci est l'un des nombreux morceaux de JSON que je lui ai donné (publication d'un commentaire sur le nœud 8801)
{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"}]
]}}}
Il est parfaitement valide (basé sur d'autres vérifications JSON en ligne). Il correspond également à ce que je vois dans les exemples de test de services sur /services/test/functional/ServivesResourceCommentTests.test
cependant, j'obtiens toujours le même message d'erreur. Cela semble similaire à: objet noeud json Drupal 7 services
qui est également non résolu. Quelqu'un peut-il m'aider avec le bon formatage JSON? Vraiment, tout ce que je veux faire, c'est passer quelque chose comme:
{ nid : 8081 , uid : 17593 ,comment:{comment_body:"test",subject:"test"}}
mes en-têtes http semblent ok et l'utilisateur / login a bien fonctionné.
Pouvez-vous me dire à quelle URL vous publieriez cette chaîne json. J'ai cherché sur le Web de la documentation pour créer un commentaire sur un nœud en utilisant les services 3. La documentation de ce module fait complètement défaut. J'ai essayé de poster sur:
example.com/api/node/{nid}/comments.json
example.com/api/comment.json
example.com/api/comment/create.json
Rien ne semble fonctionner. J'obtiens toujours "404 Not Found: Impossible de trouver le contrôleur"
EDIT: dès que j'ai posté cela, je l'ai fait fonctionner. Si cela peut aider quelqu'un d'autre à qui vous publiez votre chaîne json:
example.com/api/comment.json
Si vous utilisez Poster pour tester, assurez-vous de définir le type de contenu sur application / json. Lorsque vous utilisez jquery, assurez-vous de définir dataType: 'json'.
la source
Voici quelques exemples pour créer et mettre à jour des nœuds et des commentaires au format suivant:
Création de nœud
? q = endpoint / node.json
{"type": "article", "titre": "t8yZUfX2it", "langue": "und"}
Mise à jour du nœud
? q = endpoint / node / 123.json
{"node": {"nid": "123", "title": "9AjrXJhWMI", "language": "und"}}
Créer un commentaire
? q = endpoint / comment.json
{"subject": "liJmJfpqMX", "comment_body": {"und": [{"value": "9DyaNZi3lA"}]}, "nid": "18"}
Mise à jour des commentaires
? q = point final / commentaire / 456.json
{cid: 456, "subject": "hzU27R6daE", "comment_body": {"und": [{"value": "BqZU5DwArD"}]}, "nid": "18"}
la source
J'obtenais des problèmes similaires même lorsque je testais simplement avec l'affiche du plugin Firefox. Il s'avère que c'était tout simplement les espaces blancs supplémentaires et une autre mise en forme simple (comme les échappements) qui le faisaient. Voici une liste de ce qui fonctionne dans mes propres tests pour ce dont j'avais besoin:
CREATE USER WORKS = endpoint / user
LOGIN WORKS = endpoint / user / login
CREATE FILE WORKS = point de terminaison / fichier
CREATE NODE WORKS = endpoint / node
la source