API

Java를 사용하여 WordPress 블로그 자동 등록 기능 구현

지오준 2024. 12. 6.
반응형

Java를 사용하여 WordPress 블로그에 게시물을 자동으로 등록하는 기능을 구현하려면 WordPress REST API를 사용해야 합니다. 이 블로그에서는 WordPress API의 기본 개념, Java를 이용한 API 호출 방식, 그리고 실제 샘플 코드를 중심으로 단계별로 설명하겠습니다.

---

## **1. WordPress REST API 소개**

WordPress는 REST API를 통해 외부 애플리케이션이 WordPress의 데이터를 생성, 읽기, 수정, 삭제(CRUD)할 수 있도록 지원합니다.  
WordPress REST API를 사용하려면 API 호출에 필요한 인증 토큰(JWT, OAuth 등)을 설정해야 합니다.

### 주요 엔드포인트
- **POST 등록**: `/wp-json/wp/v2/posts`
- **GET POST**: `/wp-json/wp/v2/posts/{id}`
- **기타**: 페이지, 사용자, 카테고리 등에 대한 엔드포인트도 제공됩니다.

---

## **2. 환경 설정**

### **사전 요구사항**
1. WordPress 사이트 활성화.
2. REST API를 활성화하기 위해 [JWT Authentication 플러그인](https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/) 설치 및 설정.
3. Java 프로젝트 설정 (Maven 또는 Gradle 사용).

### **필요한 라이브러리**
- `Apache HttpClient`: HTTP 요청 및 응답 처리.
- `Jackson`: JSON 데이터 처리.

#### Maven 의존성 예시
```xml
<dependencies>
    <!-- HTTP Client -->
    <dependency>
        <groupId>org.apache.httpcomponents.client5</groupId>
        <artifactId>httpclient5</artifactId>
        <version>5.2.1</version>
    </dependency>
    <!-- Jackson -->
    <dependency>
        <groupId>cohttp://m.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.2</version>
    </dependency>
</dependencies>
```

---

## **3. Java를 이용한 WordPress API 호출**

아래는 Java로 WordPress 블로그에 자동으로 게시물을 등록하는 예제 코드입니다.

### **샘플 코드**

```java
import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.sync.HttpClients;
import org.apache.hc.core5.http.io.entity.StringEntity;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;

public class WordPressAutoPost {

    private static final String WORDPRESS_API_URL = "https://yourwordpresssite.com/wp-json/wp/v2/posts";
    private static final String AUTH_TOKEN = "YOUR_JWT_TOKEN_HERE";

    public static void main(String[] args) {
        try {
            // 게시물 데이터 설정
            Post post = new Post("테스트 게시물", "이것은 자동화된 게시물입니다.", "draft");

            // JSON으로 변환
            ObjectMapper mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(post);

            // HTTP 클라이언트 생성
            try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
                // HTTP POST 요청 생성
                HttpPost httpPost = new HttpPost(WORDPRESS_API_URL);
                httpPost.setHeader("Authorization", "Bearer " + AUTH_TOKEN);
                httpPost.setHeader("Content-Type", "application/json");
                httpPost.setEntity(new StringEntity(json));

                // 요청 실행
                try (CloseableHttpResponse response = httpClient.execute(httpPost)) {
                    System.out.println("응답 코드: " + response.getCode());
                    System.out.println("응답 메시지: " + response.getEntity().toString());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 게시물 모델 클래스
    static class Post {
        private String title;
        private String content;
        private String status;

        public Post(String title, String content, String status) {
            this.title = title;
            this.content = content;
            this.status = status;
        }

        // Getter/Setter
        public String getTitle() { return title; }
        public void setTitle(String title) { this.title = title; }
        public String getContent() { return content; }
        public void setContent(String content) { this.content = content; }
        public String getStatus() { return status; }
        public void setStatus(String status) { this.status = status; }
    }
}
```

---

## **4. 주요 코드 설명**

1. **JWT 인증**: 
   - 플러그인 설치 후, 사용자 ID와 비밀번호로 토큰 발급받기.
   - 헤더에 `Authorization: Bearer {token}` 추가.

2. **HTTP POST 요청**: 
   - WordPress API 엔드포인트에 JSON 데이터를 전송.

3. **게시물 상태**: 
   - `publish`로 설정하면 즉시 게시, `draft`는 임시 저장.

---

## **5. 테스트 및 디버깅**

### **API 요청 확인**
1. Postman을 사용하여 API가 정상 작동하는지 확인.
2. Java 코드 실행 후 WordPress 관리자 화면에서 게시물 등록 여부 확인.

### **오류 해결**
- **401 Unauthorized**: JWT 토큰이 잘못되었거나 만료됨.
- **400 Bad Request**: JSON 데이터 형식이 잘못됨.

---

## **6. 마무리**

이 예제에서는 Java와 WordPress REST API를 사용하여 블로그 게시물을 자동으로 등록하는 방법을 다뤘습니다. 이 코드를 바탕으로 예약 게시나 대량 게시 기능을 구현할 수 있습니다. WordPress REST API의 다양한 엔드포인트를 활용하여 블로그 관리 자동화를 더욱 확장해보세요!

반응형

댓글