J'ai du mal à obtenir des services pour reconnaître un POST to /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, je reçois toujours le même message d'erreur. Cela semble similaire à: objet nœud 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 lui 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é.
Le JSON suivant semble être le minimum dont vous avez besoin pour publier un commentaire:
{
"nid":"1",
"subject":"Comment Subject Text",
"comment_body":{
"und":[{
"value":"Comment body text"
}]
}
}
Puisqu'il n'y a aucun utilisateur, les commentaires sur cet "example.com/node/1" doivent être activés et les autorisations pour les utilisateurs anonymes de poster des commentaires doivent être définies.
Pouvez-vous me dire à quelle URL vous publieriez cette chaîne json. J'ai cherché sur le Web de la documentation sur la façon de créer un commentaire sur un nœud en utilisant les services 3. La documentation sur 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'.
Il s'avère que j'essayais de créer des nœuds/commentaires sans authentification, et le site n'a pas permis aux utilisateurs anonymes de créer des nœuds/commentaires. Une fois que j'ai activé l'authentification de session, connecté correctement, les choses ont bien fonctionné.
Voici quelques exemples pour créer et mettre à jour des nœuds et des commentaires au format suivant:
? q = endpoint/node.json
{"type": "article", "titre": "t8yZUfX2it", "langue": "und"}
? q = endpoint/node/123.json
{"node": {"nid": "123", "title": "9AjrXJhWMI", "language": "und"}}
? q = endpoint/comment.json
{"subject": "liJmJfpqMX", "comment_body": {"und": [{"value": "9DyaNZi3lA"}]}, "nid": "18"}
? q = point final/commentaire/456.json
{cid: 456, "subject": "hzU27R6daE", "comment_body": {"und": [{"value": "BqZU5DwArD"}]}, "nid": "18"}
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 supplémentaires et certains autres formats simples (tels que 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
{"name":"myusername","pass":"12345678","mail":"[email protected]","status":"1"}
LOGIN WORKS = endpoint/user/login
{"username":"admin","password":"admin"}
CREATE FILE WORKS = point de terminaison/fichier
{"uid":"1","filesize":"99999","filename":"whatever.bin","file":"BASE64_ENCODED_DATA"}
CREATE NODE WORKS = endpoint/node
{"title":"testrest1","type":"dl","field_dl_file":{"und":[{"fid":582}]},"uid":"1","language":"und"}