한눈에 보기: 워드프레스 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 정책을 제어해야 합니다.
출처
👉 다음 단계 학습 가이드
- 보안 강화: 인증·Nonce 보호는 「워드프레스 보안 기본기: Nonce·권한·XSS/SQLi 방어 루틴」에서 다룹니다.
- 성능 개선: API 속도 최적화는 「캐싱과 성능 최적화: Object Cache·CDN·크리티컬 CSS」로 이어집니다.