rest_ensure_response()
Перевіряє і, якщо треба, перетворює дані в об’єкт класу WP_HTTP_Response .
Використовується для стабільної роботи коду під час створення відповідей у REST API.
Функція перевірять передані дані і якщо потрібно перетворює їх на об’єкт WP_REST_Response . Далі цей об’єкт дозволяє використовувати методи set_status() , set_headers() , set_data() та інші.
Якщо передано об’єкт WP_Error або екземпляр класу WP_HTTP_Response , то вони будуть повернуті як є без змін.
Через цю функцію WP автоматично пропускає будь-які дані, які повертаються як відповідь REST API. Наприклад, коли колббек функція register_rest_route() повертає рядок, цей рядок у результаті пропускається через цю функцію.
WP_REST_Response()
Хуків немає.
Повертає
WP_REST_Response|WP_Error
.
- WP_Error, якщо у параметрі передано об’єкт WP_Error.
- Якщо переданий об’єкт вже є екземпляром класу WP_HTTP_Response, нічого не робить і повертає переданий об’єкт.
- В інших випадках створює новий WP_REST_Response об’єкт на основі переданих даних і повертає його екземпляр.
Використання
rest_ensure_response ($ Response);
-
$response
(WP_Error/WP_HTTP_Response/різне) (обов’язковий) -
Дані відповіді, які потрібно перевірити і можна перетворити на об’єкт
WP_HTTP_Response .
Приклади
#1 Отримання записів вказаного автора
У WordPress для цієї мети є дефолтні методи, але давайте для прикладу створимо свій простий варіант:
// Реєструє маршрут add_action( 'rest_api_init', function () { register_rest_route( 'myplugin/v1', '/author/(?P<id>d+)', array( 'methods' => 'GET', 'callback' => 'my_awesome_func', ))); } ); // Обробляє запит function my_awesome_func( WP_REST_Request $request ) { $posts = get_posts(array( 'author' => (int) $request['id'], ))); if (empty($posts)) return new WP_Error( 'no_author_posts', 'Записів не знайдено', array( 'status' => 404 ) ); $ Response = rest_ensure_response ($ Posts); $ Response-> set_status (201); $response->set_headers([ //'CONTENT_TYPE' => 'application/x-www-form-urlencoded', //'CONTENT_LENGTH' => 105, 'X_REAL_IP' => '54.15.124.126', ]); //$this->set_data( $data ); return $response; }
список змін
З версії 4.4.0 | Введено. |
Код rest_ensure_response() rest ensure response WP 6.0.2
function rest_ensure_response( $response ) { if ( is_wp_error( $response ) ) { return $response; } if ( $response instanceof WP_REST_Response ) { return $response; } // While WP_HTTP_Response is the base class of WP_REST_Response, it doesn't provide // Всі необхідні методи використані в WP_REST_Server::dispatch(). if ( $response instanceof WP_HTTP_Response ) { return new WP_REST_Response( $response->get_data(), $response->get_status(), $response->get_headers() ); } return new WP_REST_Response( $response ); }