Рейтинг:0

Создать узел по почтовому вызову API не удается с сообщением «Не удалось определить пакет типа объекта: поле \u0022type\u0022 отсутствует».}

флаг cn

Я пытаюсь создать узел через Drupal API, но получаю эту ошибку:

Получил сообщение об ошибке «PHP-сообщение: Неустранимая ошибка PHP: Uncaught GuzzleHttp\Exception\ClientException: Ошибка клиента: «POST https://site.it/entity/node?_format=hal_json» привел к ответу «422 Unprocessable Entity»: \n{"message":"Не удалось определить набор типов объектов: поле \u0022type\u0022 отсутствует."}

Это моя функция:

публичная функция createFaq($notes, $telegram_id){
  $url = "/entity/node?_format=hal_json"; 
  $опт = [
    'заголовки' => self::$baseHeader,
    'тело' => json_encode([
      [
        'тип' => [['target_id' => 'часто задаваемые вопросы'] ],
        'название' => 'название', 
        'utente' => [ [ 'target_id' => '123462' ] ],
        'field_domanda' => [ [ 'value' => $notes['domanda'] ] ],
        'field_presenza' => [ [ 'value' => $notes['presenza'] == "Si"? правда : ложь ] ],
      ]
    ])
  ];

  $response = $this->client->request('POST', $url, $opt);
  $r = json_decode($response->getBody());
  вернуть $r; 
}

Но это действительно странно, потому что эта другая функция работает:

общедоступная статическая функция createUser($title){
  $url= "/entity/node?_format=hal_json"; 
  $опт = [
    'заголовки' => self::$baseHeader,
    'тело' => json_encode([
      'название' => [[ 'значение' => $название]],
      'тип' => [ [ 'target_id' => 'статья' ] ],
    ])
  ];

  $response = $this->client->request('POST', $url, $opt);
  $r = json_decode($response->getBody());
  вернуть $r; 
}

Может кто понял мою ошибку?

berliner avatar
флаг bd
В вашем втором (рабочем) примере это тело POST `['type' => ...]`, тогда как в первом примере оно заключено в дополнительный массив: `[['type' => ...]]`.
Shyghar avatar
флаг cn
Ты прав!! Спасибо
Рейтинг:0
флаг cn

Это код, который я использовал для создания узла с помощью rest API:

Конечная точка: /узел?_format=hal_json

Метод: ПУБЛИКОВАТЬ

Тело:

{
  "заглавие": [
    {
      "value": "Это вопрос"
    }
  ],
  "поле_вопрос": [
    {
      "value": "Это вопрос"
    }
  ],
  "поле_параметры": [
    {
      "value": "Это правильный вариант"
    },
    {
      "value": "Это неверный вариант"
    },
    {
      "value": "Это определенно не правильный вариант"
    },
    {
      "value": "Это самый глупый вариант"
    }
  ],
  "тип": [
    {
      "target_id": "вопрос"
    }
  ]
}

Включить Интерфейс отдыха модуль, чтобы проверить, существует ли конечная точка. На самом деле я не могу найти плагин, предлагающий эту конечную точку, но с включенным пользовательским интерфейсом Rest я увидел этот URI для публикации типов контента.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.