programing

WP REST API 요청 여부를 확인하시겠습니까?

jooyons 2023. 4. 5. 21:33
반응형

WP REST API 요청 여부를 확인하시겠습니까?

요청이 API 요청인지 확인하는 가장 좋은 방법은 무엇입니까?

요구는 커스텀 API 요구일 수 있습니다.즉, 다음과 같습니다.

mysite.com/wp-json/my_namespace/my_version/my_action

API route wp-json의 유무는 물론 확인할 수 있습니다만, 그것을 체크하는 기능이 내장되어 있을 것입니다.

훅을 걸기 위해 필요합니다.

add_action('init', 'do_something_only_if_api_request');

function do_something_only_if_api_request()
{
   if ( ! wp_api_request() ) {
     return;
   }
   // do stuff
}

확인하실 수 있습니다.defined('REST_REQUEST')이 상수는 다음과 같이 정의됩니다.truerest_api_loaded()(다른 정의 없음).

WP Rest API 개발자들과 다음과 같은 새로운 기능의 도입에 대한 논의가 있었다.is_rest_request()결국 그들은 이 상수를 추구했다.

2016년 12월 현재 REST API 문서는 엔드포인트처럼 보이지 않는 모든 것에 대해 매우 부실합니다.

다만, 몇개의 함수가 있어, 문서화가 잘 되어 있기 때문에, 파일내에서 메뉴얼을 찾을 수 있습니다.다음을 참조해 주세요.wordpress/wp-includes/rest-api.php

REST API 콜에만 액션을 추가할 경우 액션을 후크할 수 있습니다.rest_api_init다음과 같습니다.

add_action('rest_api_init', 'do_something_only_if_api_request');

function do_something_only_if_api_request($wp_rest_server)
{

   // do stuff

}

자세한 내용은 PHPdoc 코멘트에서 확인할 수 있습니다.

    /**
     * Fires when preparing to serve an API request.
     *
     * Endpoint objects should be created and register their hooks on this action rather
     * than another action to ensure they're only loaded when needed.
     *
     * @since 4.4.0
     *
     * @param WP_REST_Server $wp_rest_server Server object.
     */

내 경우 플러그인은 사용자가 로그인하는 페이지에 대해 wp_redirect를 수행하고 있습니다.

rest api가 호출될 경우 이를 피하고 싶습니다.

그래서 지금 쓰고 있어요.

if (! strpos( $_SERVER['REQUEST_URI'], 'wp-json')) // It's not a rest-api call

언급URL : https://stackoverflow.com/questions/41101294/check-whether-request-is-wp-rest-api-request

반응형