한눈에 보기: 워드프레스 REST API는 워드프레스 데이터를 JSON 형태로 주고받을 수 있게 해줍니다. 이를 통해 외부 서비스 연동, SPA·모바일 앱 연결, 헤드리스 CMS까지 확장이 가능하죠. 이 글에서는 REST API 인증·Nonce, 커스텀 엔드포인트 제작, 클라이언트 연동까지 기본기를 단계별로 정리했습니다.

1. 인증·Nonce

REST API 요청은 누구나 접근할 수 있기 때문에, 반드시 인증 절차를 거쳐야 합니다. 기본적으로 워드프레스는 Nonce라는 일회용 토큰을 활용합니다. 관리 화면에서 JS로 API를 호출할 때, Nonce가 함께 전달되며 권한을 확인합니다.

예를 들어, 글을 등록하는 API는 단순히 /wp-json/wp/v2/posts 엔드포인트에 POST 요청을 보내는 게 아니라, Nonce 헤더(X-WP-Nonce)와 로그인된 사용자 권한까지 검증합니다.

// JavaScript 예시
fetch('/wp-json/wp/v2/posts', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-WP-Nonce': window.wpApiSettings.nonce
  },
  body: JSON.stringify({
    title: 'API로 작성한 글',
    content: 'REST API 테스트입니다.',
    status: 'publish'
  })
});

추가로, 서버 간 통신이나 외부 앱 연동 시에는 Application Password나 OAuth/JWT 인증 방식을 씁니다. 단순 사이트 내 확장은 Nonce, 외부 서비스 확장은 토큰 기반 인증이 일반적입니다.

핵심 요약: REST API 인증은 Nonce(내부)와 Token(외부) 두 축으로 구분해 이해해야 합니다.

2. 커스텀 엔드포인트

기본 REST API 엔드포인트는 글, 페이지, 사용자 등 워드프레스의 핵심 객체만 제공합니다. 하지만 플러그인이나 테마에서 직접 데이터를 제공하려면 커스텀 엔드포인트를 등록해야 합니다.

// 커스텀 엔드포인트 등록
add_action('rest_api_init', function () {
  register_rest_route('myplugin/v1', '/hello', [
    'methods' => 'GET',
    'callback' => function () {
      return ['message' => 'Hello REST API'];
    },
    'permission_callback' => '__return_true'
  ]);
});

위 예제는 /wp-json/myplugin/v1/hello 요청 시 JSON 메시지를 반환합니다. 권한이 필요한 경우 permission_callback에 조건을 추가할 수 있습니다.

이 방식을 확장하면 관리자 UI 전용 API, 외부 시스템 데이터 연동 API, 심지어 특정 조건에 따라 사용자 맞춤 데이터를 제공하는 것도 가능합니다.

핵심 요약: 커스텀 엔드포인트는 플러그인의 확장성과 외부 연동을 위한 관문이다.

3. 클라이언트 연동

REST API의 장점은 워드프레스 데이터를 어디서든 가져올 수 있다는 점입니다. React·Vue 같은 프론트엔드 프레임워크, 모바일 앱, 심지어 서버 사이드 애플리케이션까지 동일하게 접근 가능합니다.

예를 들어, React에서 블로그 글 목록을 불러오려면 아래처럼 호출할 수 있습니다.

// React 예시
useEffect(() => {
  fetch('/wp-json/wp/v2/posts')
    .then(res => res.json())
    .then(data => setPosts(data));
}, []);

또한, 워드프레스를 헤드리스 CMS로 사용하는 사례도 늘고 있습니다. 즉, 백엔드로는 워드프레스가 콘텐츠를 관리하고, 프론트엔드는 Next.js 같은 프레임워크가 UI를 담당하는 구조죠.

JSON은 데이터 교환 표준이므로, 다른 API(예: 외부 ERP, CRM)와도 쉽게 통합할 수 있습니다. 워드프레스는 REST API라는 관문을 통해 단순 블로그를 넘어서 플랫폼으로 성장할 수 있습니다.

핵심 요약: REST API 클라이언트 연동은 워드프레스를 단순 CMS가 아닌 플랫폼으로 확장하는 핵심 열쇠다.

FAQ

  • Q. REST API가 활성화되어 있는지 확인하려면? 브라우저에서 /wp-json/에 접속해보면 API 목록이 출력됩니다.
  • Q. JSON 대신 XML로 데이터를 주고받을 수 있나요? 기본은 JSON이지만, XML 변환 플러그인을 사용하면 가능합니다. 다만 JSON이 표준이므로 권장됩니다.
  • Q. 비로그인 사용자도 API를 호출할 수 있나요? 공개 데이터(게시글 조회 등)는 가능합니다. 쓰기/수정은 Nonce 또는 인증 토큰이 필요합니다.
  • Q. REST API 속도가 느릴 땐 어떻게 최적화하나요? 캐싱 플러그인, Transients API, Object Cache를 활용해 반복 호출을 줄이는 게 효과적입니다.
  • Q. GraphQL과는 어떤 차이가 있나요? REST는 엔드포인트마다 데이터가 고정이고, GraphQL은 클라이언트가 필요한 데이터만 선택할 수 있습니다. 유연성은 GraphQL이 높지만, REST가 기본 내장된 워드프레스 환경에선 REST부터 활용하는 게 실용적입니다.
  • Q. API 요청 시 CORS 에러가 발생하는데요? 서버에서 허용 도메인을 설정하거나 플러그인으로 CORS 정책을 제어해야 합니다.

출처

👉 다음 단계 학습 가이드