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 );
}