Как передать данные через почтовый запрос в поле, схема которого представляет собой массив объектов в WordPress REST API

Итак, только начинаем с WordPress REST API

Я создаю свой собственный контроллер REST API (это означает, что мой собственный класс расширяет класс \ 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 представляет собой массив объектов,

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

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

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

Примечание. Вышеупомянутая операция будет успешной, если я удалю / не пропущу поля.

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

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

Изменить:

Также пробовал это

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

Изменить:

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


person Jplus2    schedule 19.02.2020    source источник


Ответы (1)


Вместо параметра form-data, можете ли вы попробовать необработанный вариант с приведенным ниже кодом:

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

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

Сообщите мне, если возникнут какие-либо вопросы.

Спасибо

Дженил

person Jenil Kanani    schedule 19.02.2020
comment
Можете ли вы рассказать, какую ошибку вы получаете? Также прошли ли вы авторизацию при использовании метода POST? - person Jenil Kanani; 20.02.2020