데브포일 홈
WordPress 자동화
Guest
STAGE 8 · Lv.44

커스텀 엔드포인트 만들기

register_rest_route()로 커스텀 REST API 엔드포인트를 만들고, 권한 콜백, 요청/응답 처리, 버전 관리를 배웁니다.

커스텀 엔드포인트가 필요한 이유

기본 API의 한계

WordPress의 기본 REST API는 글, 페이지, 댓글, 사용자 등 표준 리소스를 다루기에 충분합니다. 하지만 실제 프로젝트에서는 다음과 같은 상황에서 커스텀 엔드포인트가 필요합니다:


1. 커스텀 데이터 처리: 기본 API가 제공하지 않는 데이터를 반환해야 할 때. 예를 들어, 여러 포스트 타입의 데이터를 하나의 응답으로 결합하거나, 커스텀 메타 데이터를 특정 형식으로 반환해야 할 때.


2. 비즈니스 로직 처리: 단순한 CRUD 이상의 복잡한 비즈니스 로직이 필요할 때. 예를 들어, 주문 처리, 결제 확인, 포인트 적립 등의 작업.


3. 외부 서비스 통합: 외부 서비스에서 데이터를 받거나 보내기 위한 전용 엔드포인트가 필요할 때. 웹훅 수신, 결제 게이트웨이 콜백 등.


4. 성능 최적화: 기본 API의 응답이 너무 크거나 불필요한 데이터를 포함할 때, 필요한 데이터만 반환하는 경량 엔드포인트를 만들 수 있습니다.


5. 모바일 앱 전용 API: 모바일 앱에 맞춤화된 데이터 구조를 반환하는 전용 엔드포인트.

register_rest_route() 기초

함수 구조

register_rest_route()는 WordPress REST API에 새 엔드포인트를 등록하는 핵심 함수입니다. rest_api_init 액션 훅 안에서 호출해야 합니다.

// register_rest_route() 기본 구조 register_rest_route( $namespace, // 네임스페이스 (예: 'my-plugin/v1') $route, // 경로 (예: '/posts') $args // 설정 배열 ); // 최종 URL: /wp-json/{namespace}/{route} // 예: /wp-json/my-plugin/v1/posts

가장 간단한 커스텀 엔드포인트

먼저 가장 기본적인 형태의 커스텀 엔드포인트를 만들어보겠습니다.

// functions.php 또는 커스텀 플러그인에 추가 add_action('rest_api_init', function() { // 간단한 GET 엔드포인트 register_rest_route('my-site/v1', '/hello', [ 'methods' => 'GET', 'callback' => function() { return [ 'message' => 'Hello, WordPress REST API!', 'time' => current_time('mysql'), 'site' => get_bloginfo('name') ]; }, 'permission_callback' => '__return_true' ]); }); // 테스트: GET /wp-json/my-site/v1/hello // 응답: {"message":"Hello...","time":"...","site":"..."}
네임스페이스(Namespace)
엔드포인트를 그룹화하는 접두사입니다. 보통 "플러그인명/버전" 형식으로 만듭니다. 예: "my-plugin/v1". 네임스페이스를 사용하면 다른 플러그인의 엔드포인트와 충돌을 방지하고, API 버전 관리가 가능해집니다.
콜백(Callback)
엔드포인트가 호출되었을 때 실행되는 함수입니다. WP_REST_Request 객체를 인자로 받으며, 배열, WP_REST_Response, 또는 WP_Error를 반환해야 합니다.
권한 콜백(Permission Callback)
요청자가 이 엔드포인트에 접근할 권한이 있는지 확인하는 함수입니다. true를 반환하면 접근 허용, false나 WP_Error를 반환하면 거부됩니다. 보안을 위해 반드시 설정해야 합니다.
🔒
여기까지는 미리보기입니다
커스텀 엔드포인트 만들기
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)