Як я розміщую новий вузол?


16

Я пересилав багато посилань, включаючи наступне:

Я спробував декілька способів розмістити новий вузол на сайті Drupal, але мені не вдалося. Я створив зразок CCK для зберігання даних студентів з іменем, віком, статтю, DOB та додав деякий список.

Я встановив і налаштував модуль Services (D7) і створив службову кінцеву точку в службах.
Як очікувалося, GET - це найпростіший спосіб отримати деталі вузла в JSON. http://localhost/drupal/services/nodeпросто перераховані всі вузли.

Я досі не можу зрозуміти, як використовувати метод POST .

  1. Я хотів би шукати учнів, ім’я яких містить Джон . Я спробував localhost/drupal/services/node&node[name]=john. Я без успіху використовував плагін POST Man для Chrome. Я також спробував деякі інші способи.

  2. Я намагався додати нового студента на сайт без успіху.

Хтось може мене направляти, щоб вищезазначене працювало добре?

ОНОВЛЕННЯ:

Я спробував додати нові вузли статті . Це добре працювало. але коли я намагаюся додати вузли типу CCK відділу, він відображає " s: 22:" CSRF перевірка не вдалася "; " Ось знімки екрана

Я перейшов за посиланням https://drupal.org/node/2013781

Я стежив за сеансом = session_name = session_id, але я все одно отримую помилку.
введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення


Що відбувається при спробі розмістити вузол? Ви отримуєте повідомлення про помилку? Якщо так, то що це?
Гаелан

Відповіді:


22

Сподіваюся, це допоможе вам,

Для Drupal 7

Використовувані інструменти:

  • Додаток плаката Firefox для тестів та налагодження. Можуть бути й інші доповнення. Але для цього прикладу я використовую надбудову Firefox.
  • Для редагування та перевірки даних JSON ви можете використовувати

HTTP-запити

  • Щоб зробити HTTP-запити, вам потрібно використовувати надбудову Firefox POSTER .

  • Два поширені методи для відповіді на запит між клієнтом і сервером:

    • ЗАРАЗ
    • POST
  • Після того як надбудову завантажено. Відкрийте Firefox -> Інструменти -> Плакат

    введіть тут опис зображення

  • Обов’язково ввімкніть аутентифікацію сеансу . Після правильного налаштування Служб перед створенням вузла слід увійти . Після входу ви можете створити вузли.

  • Для входу використовуйте метод POST з такою URL-адресою, як http://XXXXXXXX.com/demo/rulebook/rulebook_endpoint/user/login

    введіть тут опис зображення

  • Якщо це дійсний користувач, він поверне реквізити користувача з ідентифікатором сесії та ім'ям сесії . Якщо недійсна, вона поверне доступ до домену відмовлений

    введіть тут опис зображення

  • Використовуючи ім’я та ідентифікатор сесії у ПОШІТІ ХОЛОДА, ми можемо створити нові вузли

    введіть тут опис зображення

  • Тепер, додавши HEADER, вам потрібно зробити HTTP POST-запит і переконатися, що користувач повинен мати дозволи на створення вузла.

    введіть тут опис зображення

  • Якщо вузол створений, ви отримаєте відповідь за допомогою вузла зв'язку

    введіть тут опис зображення

ПРИМІТКА. Якщо ви хочете відповісти в JSON, ви завжди повинні додавати .json в кінці URL-адреси. Наприклад, http://XXXXXXXX.com/test/endpoint/user.json АБО http://XXXXXXXX.com/test/endpoint/node.json АБО http://XXXXXXXX.com/test/endpoint/user/user_id .json АБО http://XXXXXXXX.com/test/endpoint/node/node_id.json


На жаль, я не перевірив параметр, кодований URL-адресою форми, в модулі послуг. і ось відповідь 401: Несанкціоновано: не вдалося авторизувати CSRF. що може бути причиною цього? Велике спасибі
Ramaraju.d

привіт @inizio чи можу я знати, на якій основі ви присвоїли значення сеансу в HEADERS. Чи можете ви зрозуміти. Наприклад, sessionId, який я отримав, це SESS29af1facda0a866a687d5055f2fade2c, але у вашій відповіді він має більшу довжину!
Ramaraju.d

Значення сесії в HEADERS складаються з імені сесії та сесії_id. тобто сеанс - це змінна, і її значення складається з сесії_ ім’я = сесія_id. session = (session_name = session_value)
inizio

У ньому написано 401: Несанкціоноване: перевірка CSRF не вдалася. Я вказав таке як заголовки name = значення сеансу = SESS29af1facda0a866a687d5055f2fade2c = gBVoqtkN2ZNjDyOjIfpz47oQpnmCKytcgHOCHZhKRzo
Ramaraju.d

Так, це спрацювало. Але єдиний випуск: Стаття CCK має заголовок, імена поля, тіло, але зберігається лише заголовок і створюється вузол, а поле тіла та імен порожні. Як це подолати.
Ramaraju.d

7

Для Drupal 7 та служб 7.x-3.x

Крок 1. Надішліть запит на публікацію user.loginресурсу зі своїм іменем користувача та паролем.

Якщо вхід вдалий, ви отримаєте об’єкт відповіді з 4 властивостями:

  • ім'я сесії
  • сессид
  • лексема
  • користувач (об’єкт)

Знімок екрана від хромового листоногра Google Знімок екрана від хромового листоногра Google

Крок 2: Надішліть запит на публікацію nodeз двома заголовками

  • Файл cookie: [ім'я_ сесії] = [sessid]
  • X-CSRF-маркер: [маркер]

Знімок екрана від хромового листоногра Google Знімок екрана від хромового листоногра Google


Я спробував користувач <endpoint> /user.login, але це не повторюється: prntscr.com/gru4y6 - не впевнений, що я роблю неправильно.
Патоші パ ト シ

0

Якщо ви робите POST для API REST, вам доведеться вводити все в дані POST , а не на URL . У листоноші ви можете встановити запит на публікацію, а не набрати до x-www-form-urlencodedта нижче, щоб ви могли додавати свої дані. Не забудьте додати статус, uid, мову, тип, назву та додаткові значення. URL-адреса ресурсу повинна бути лише HOST/REST_API_PATH/node.


1
Трохи заплутано. Добре, ви можете сказати мені, якими мають бути параметри для створення нової статті.? Якщо ви не заперечуєте, чи можете ви розмістити приклад або посилання, щоб я міг мати чітке поняття!
Ramaraju.d
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.