Как передать данные с помощью пост-запроса в поле, схема которого представляет собой массив объектов в WordPress REST API - PullRequest
0 голосов
/ 19 февраля 2020

Итак, начнем с WordPress REST API

Я создаю свой собственный REST API Controller (имеется в виду, что мой собственный класс расширяется \ WP_REST_Controller класс)

Я представляю маршруты API для пользовательского типа сообщения

Код очень длинный, поэтому я не буду вставлять сюда весь код, только важные

Итак, пока все в порядке, я могу читать данные из маршрутов и создавать данные по маршрутам

У меня возникла проблема с попыткой отправки данные через POST-запрос для полей, схема которых является массивом объекта

Итак, учитывая эту схему

    $schema = array(
        '$schema'    => 'http://json-schema.org/draft-04/schema#',
        'title'      => $this->post_type,
        'type'       => 'object',
        'properties' => array(
            'id'          => array(
                'description' => __( 'Unique identifier for the survey cpt object.', 'wp-plugin-boilerplate' ),
                'type'        => 'integer',
                'context'     => array( 'view', 'edit', 'embed' ),
                'readonly'    => true,
            ),
            'title'             => array(
                'description' => __( 'The title for the survey cpt object.', 'wp-plugin-boilerplate' ),
                'type'        => 'string',
                'context'     => array( 'view', 'edit', 'embed' ),
            ),
            'description' => array(
                'description' => __( 'The description for the survey cpt object', 'wp-plugin-boilerplate' ),
                'type'        => 'string',
                'context'     => array( 'view', 'edit', 'embed' )
            ),
            'status'      => array(
                'description' => __( 'A named status for the survey cpt object.', 'wp-plugin-boilerplate' ),
                'type'        => 'string',
                'enum'        => array_keys( get_post_stati( array( 'internal' => false ) ) ),
                'context'     => array( 'view', 'edit' ),
            ),
            'type'        => array(
                'description' => __( 'Type of Post for the survey cpt object.', 'wp-plugin-boilerplate' ),
                'type'        => 'string',
                'context'     => array( 'view', 'edit', 'embed' ),
                'readonly'    => true,
            ),
            'fields'      => array(
                'description' => __( 'Set of fields for the survey cpt object.', 'wp-plugin-boilerplate' ),
                'type'        => 'array',
                'context'     => array( 'view', 'edit', 'embed' ),
                'items'       => array(
                    'type'       => 'object',
                    'properties' => array(
                        'field_type'  => array( 'type' => 'string' ),
                        'description' => array( 'type' => 'string' ),
                        'order'       => array( 'type' => 'integer' )
                    )
                )
            )
        )
    );

Итак, поле fields является массивом объектов ,

Просто игнорируйте аутентификацию, чтобы избежать дальнейших усложнений в среднем, я просто разрешил publi c создание элементов cpt через REST API atm.

Когда я отправляю POST запрос через почтальона вот так * 10 38 *

enter image description here

Примечание: Операция, описанная выше, будет успешной, если я удаляю / не пропускаю поля field.

Так что-то не так в том, как я определяю схему? или что-то не так при отправке данных?

Заранее спасибо.

Редактировать:

Тоже пробовал

enter image description here

Редактировать:

Подтвердите, что это проблема только для PostMan , отправка POST запроса через AX IOS работает нормально

1 Ответ

0 голосов
/ 19 февраля 2020

Вместо опции данных формы , можете ли вы попробовать необработанный параметр с кодом ниже:

{
    "title": "Test Survey 5",
    "description": "lalala"
    "status": "publish",
    "fields": {
        "field_name1": "value1",
        "field_name2": "value2"     
    }
}

Используйте свое исходное имя_поля и значение для " field_name1 "и" field_name2 ".

Дайте мне знать, если какой-либо запрос.

Спасибо

Jenil

...