REST API를 이용한 Confluence 문서 업데이트
REST API를 이용한 Confluence 문서 업데이트
Confluence 문서 정보를 업데이트하는 방법 중 하나는 Confluence REST API를 이용하는 것입니다. 이 API를 통해 프로그램적으로 문서를 조회, 생성, 수정할 수 있으며, 이를 위해 requests 라이브러리를 사용하여 HTTP 요청을 보낼 수 있습니다.
1. Confluence REST API 소개
Confluence의 REST API는 Confluence에서 문서를 생성하고 업데이트하는 데 필요한 다양한 기능을 제공합니다. 문서를 업데이트하려면 주로 PUT 요청을 사용합니다. 이 요청은 특정 페이지의 내용을 수정할 수 있게 해줍니다.
Confluence REST API를 사용하여 문서를 업데이트하려면 다음 사항이 필요합니다:
- Confluence의 API 엔드포인트 (예: https://<your-domain>.atlassian.net/wiki/rest/api/content/{page_id})
- Confluence 페이지 ID (수정할 페이지의 고유 식별자)
- Atlassian API 토큰 (인증을 위해 필요)
2. 사전 준비
- API Token 생성: Atlassian 계정에서 API 토큰을 생성해야 합니다. Atlassian API Token 페이지에서 토큰을 생성할 수 있습니다. 
- 필요한 Python 라이브러리 설치: Confluence REST API에 요청을 보내려면 - requests라이브러리를 사용합니다. 이 라이브러리가 없다면 아래와 같이 설치하세요:- pip install requests
3. requests를 이용한 Confluence 문서 업데이트 예제
다음은 requests 라이브러리를 사용하여 Confluence 문서 정보를 업데이트하는 Python 코드 예제입니다.
3.1. API 엔드포인트 및 인증 정보 설정
import requests
import json
# Confluence 도메인, 페이지 ID 및 API 엔드포인트 설정
confluence_base_url = 'https://<your-domain>.atlassian.net/wiki'
page_id = '<your-page-id>'
api_url = f'{confluence_base_url}/rest/api/content/{page_id}'
# Atlassian 계정의 이메일과 API 토큰
auth_email = '<your-email>'
api_token = '<your-api-token>'
# 인증 정보
auth = (auth_email, api_token)3.2. 문서 정보 가져오기
Confluence 페이지를 수정하기 전에 해당 페이지의 현재 정보를 가져와야 합니다. 특히 version 정보가 필요합니다. GET 요청을 사용하여 페이지 정보를 가져옵니다.
# 문서 정보 가져오기
response = requests.get(api_url, auth=auth)
page_info = response.json()
# 현재 버전 정보 가져오기
current_version = page_info['version']['number']
print(f'현재 페이지 버전: {current_version}')3.3. 문서 업데이트
문서를 업데이트할 때는 새로운 내용과 함께 PUT 요청을 보내야 합니다. 이때, 업데이트하려는 페이지의 내용(body), 제목(title), 그리고 version 정보가 필요합니다.
# 업데이트할 새 버전
new_version = current_version + 1
# 업데이트할 문서 데이터 설정
update_data = {
    "id": page_id,
    "type": "page",
    "title": "업데이트된 페이지 제목",
    "version": {
        "number": new_version
    },
    "body": {
        "storage": {
            "value": "<p>이것은 새로 업데이트된 내용입니다.</p>",
            "representation": "storage"
        }
    }
}
# PUT 요청으로 문서 업데이트
update_response = requests.put(
    api_url,
    data=json.dumps(update_data),
    auth=auth,
    headers={"Content-Type": "application/json"}
)
# 응답 확인
if update_response.status_code == 200:
    print("문서가 성공적으로 업데이트되었습니다!")
else:
    print(f"문서 업데이트 실패: {update_response.status_code}")
    print(update_response.json())3.4. 전체 코드
import requests
import json
# Confluence 도메인, 페이지 ID 및 API 엔드포인트 설정
confluence_base_url = 'https://<your-domain>.atlassian.net/wiki'
page_id = '<your-page-id>'
api_url = f'{confluence_base_url}/rest/api/content/{page_id}'
# Atlassian 계정의 이메일과 API 토큰
auth_email = '<your-email>'
api_token = '<your-api-token>'
# 인증 정보
auth = (auth_email, api_token)
# 문서 정보 가져오기
response = requests.get(api_url, auth=auth)
page_info = response.json()
# 현재 버전 정보 가져오기
current_version = page_info['version']['number']
# 업데이트할 새 버전
new_version = current_version + 1
# 업데이트할 문서 데이터 설정
update_data = {
    "id": page_id,
    "type": "page",
    "title": "업데이트된 페이지 제목",
    "version": {
        "number": new_version
    },
    "body": {
        "storage": {
            "value": "<p>이것은 새로 업데이트된 내용입니다.</p>",
            "representation": "storage"
        }
    }
}
# PUT 요청으로 문서 업데이트
update_response = requests.put(
    api_url,
    data=json.dumps(update_data),
    auth=auth,
    headers={"Content-Type": "application/json"}
)
# 응답 확인
if update_response.status_code == 200:
    print("문서가 성공적으로 업데이트되었습니다!")
else:
    print(f"문서 업데이트 실패: {update_response.status_code}")
    print(update_response.json())4. 마무리
위 코드 예제는 Confluence REST API를 통해 문서를 수정하는 기본적인 방법을 보여줍니다. 실제 서비스에 적용할 때는 인증 정보를 환경 변수로 처리하거나 별도의 보안 장치를 마련하는 것이 좋습니다.
카테고리 다른 글
| Date | Title | Author | 
|---|---|---|
| Oct 19, 2024 | Jira 시작하기 (프로젝트 생성과 기본 사용법) | |
| Oct 6, 2024 | Python으로 JIRA API 사용하기 | |
| Oct 6, 2024 | Python으로 JIRA API 사용하기 2 | |
| Oct 6, 2024 | JIRA 클라우드 무료 계정 만드는 방법 | |
| Oct 6, 2024 | Jira API 호출 후 반환되는 값의 구조 이해하기 |