У меня проблемы с получением услуг по распознаванию POST в /comment.json. У меня похожая проблема с созданием узлов.
Я получаю следующее сообщение об ошибке: HTTP / 1.1 406 Недопустимо: отсутствует комментарий обязательного аргумента
Это сообщение приходит из файла: /services/server/rest_server/includes/RESTServer.inc В частности, строки:
elseif (!isset($info['optional']) || !$info['optional']) {
return services_error(t('Missing required argument !arg', array(
'!arg' => $info['name'],
)), 406);
}
в основном, кажется, что аргумент «комментарий» отсутствует (и это не обязательно).
Это один из многих фрагментов JSON, который я дал (отправка комментария на узел 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"}]
]}}}
Это совершенно верно (на основе других онлайн-проверок JSON). Это также соответствует тому, что я вижу в примерах тестирования служб в /services/test/functional/ServivesResourceCommentTests.test
однако я всегда получаю одно и то же сообщение об ошибке. Это похоже на: Drupal 7 обслуживает объект узла json
что также не решено. Может кто-нибудь помочь мне с правильным форматированием JSON? На самом деле все, что я хочу сделать, это передать что-то вроде:
{ nid : 8081 , uid : 17593 ,comment:{comment_body:"test",subject:"test"}}
мои http заголовки кажутся нормальными и user / login работал нормально.
Можете ли вы сказать мне, по какому URL вы бы разместили эту строку json. Я искал во всем Интернете некоторую документацию о том, как создать комментарий к узлу, используя службы 3. Документация по этому модулю полностью отсутствует. Я пытался опубликовать на:
example.com/api/node/{nid}/comments.json
example.com/api/comment.json
example.com/api/comment/create.json
Ничто не похоже на работу. Я всегда получаю «404 Not Found: Не удалось найти контроллер»
РЕДАКТИРОВАТЬ: как только я опубликовал это, я получил его на работу. Если это кому-то поможет, отправьте свою строку json по адресу:
example.com/api/comment.json
Если вы используете Poster для тестирования, обязательно установите тип контента для application / json. При использовании jquery убедитесь, что вы установили dataType: 'json'.
источник
Вот несколько примеров для создания и обновления узлов и комментариев в следующем формате:
Узел Создать
? Д = конечная точка / node.json
{ "Типа": "статья", "название": "t8yZUfX2it", "язык": "унд"}
Обновление узла
? Д = конечная точка / узел / 123.json
{ "Узел": { "NID": "123", "название": "9AjrXJhWMI", "язык": "унд"}}
Комментарий Создать
? Д = конечная точка / comment.json
{"subject": "liJmJfpqMX", "comment_body": {"und": [{"value": "9DyaNZi3lA"}]}, "nid": "18"}
Обновление комментария
? Д = конечная точка / комментарий / 456.json
{cid: 456, "subject": "hzU27R6daE", "comment_body": {"und": [{"value": "BqZU5DwArD"}]}, "nid": "18"}
источник
У меня возникали похожие проблемы даже при тестировании с постером плагина Firefox. Оказывается, это были просто дополнительные пробелы и некоторое другое простое форматирование (например, экранирование), которое делало это. Вот список того, что работает в моих собственных тестах для того, что мне нужно:
CREATE USER WORKS = конечная точка / пользователь
LOGIN WORKS = конечная точка / пользователь / логин
СОЗДАТЬ ФАЙЛ РАБОТЫ = конечная точка / файл
CREATE NODE WORKS = конечная точка / узел
источник