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 엔드포인트 설정
= 'https://<your-domain>.atlassian.net/wiki'
confluence_base_url = '<your-page-id>'
page_id = f'{confluence_base_url}/rest/api/content/{page_id}'
api_url
# Atlassian 계정의 이메일과 API 토큰
= '<your-email>'
auth_email = '<your-api-token>'
api_token
# 인증 정보
= (auth_email, api_token) auth
3.2. 문서 정보 가져오기
Confluence 페이지를 수정하기 전에 해당 페이지의 현재 정보를 가져와야 합니다. 특히 version
정보가 필요합니다. GET
요청을 사용하여 페이지 정보를 가져옵니다.
# 문서 정보 가져오기
= requests.get(api_url, auth=auth)
response = response.json()
page_info
# 현재 버전 정보 가져오기
= page_info['version']['number']
current_version
print(f'현재 페이지 버전: {current_version}')
3.3. 문서 업데이트
문서를 업데이트할 때는 새로운 내용과 함께 PUT
요청을 보내야 합니다. 이때, 업데이트하려는 페이지의 내용(body
), 제목(title
), 그리고 version
정보가 필요합니다.
# 업데이트할 새 버전
= current_version + 1
new_version
# 업데이트할 문서 데이터 설정
= {
update_data "id": page_id,
"type": "page",
"title": "업데이트된 페이지 제목",
"version": {
"number": new_version
},"body": {
"storage": {
"value": "<p>이것은 새로 업데이트된 내용입니다.</p>",
"representation": "storage"
}
}
}
# PUT 요청으로 문서 업데이트
= requests.put(
update_response
api_url,=json.dumps(update_data),
data=auth,
auth={"Content-Type": "application/json"}
headers
)
# 응답 확인
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 엔드포인트 설정
= 'https://<your-domain>.atlassian.net/wiki'
confluence_base_url = '<your-page-id>'
page_id = f'{confluence_base_url}/rest/api/content/{page_id}'
api_url
# Atlassian 계정의 이메일과 API 토큰
= '<your-email>'
auth_email = '<your-api-token>'
api_token
# 인증 정보
= (auth_email, api_token)
auth
# 문서 정보 가져오기
= requests.get(api_url, auth=auth)
response = response.json()
page_info
# 현재 버전 정보 가져오기
= page_info['version']['number']
current_version
# 업데이트할 새 버전
= current_version + 1
new_version
# 업데이트할 문서 데이터 설정
= {
update_data "id": page_id,
"type": "page",
"title": "업데이트된 페이지 제목",
"version": {
"number": new_version
},"body": {
"storage": {
"value": "<p>이것은 새로 업데이트된 내용입니다.</p>",
"representation": "storage"
}
}
}
# PUT 요청으로 문서 업데이트
= requests.put(
update_response
api_url,=json.dumps(update_data),
data=auth,
auth={"Content-Type": "application/json"}
headers
)
# 응답 확인
if update_response.status_code == 200:
print("문서가 성공적으로 업데이트되었습니다!")
else:
print(f"문서 업데이트 실패: {update_response.status_code}")
print(update_response.json())
4. 마무리
위 코드 예제는 Confluence REST API를 통해 문서를 수정하는 기본적인 방법을 보여줍니다. 실제 서비스에 적용할 때는 인증 정보를 환경 변수로 처리하거나 별도의 보안 장치를 마련하는 것이 좋습니다.