rest_ensure_response() WP 4.4.0

Перевіряє і, якщо треба, перетворює дані в об’єкт класу 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 .

Приклади

0

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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *