Confluence REST API๋ฅผ ํ์ฉํ์ฌ ํ์ด์ง ์์ฑ/์์ /์ญ์ ํ๊ธฐ
์ค๋ฌด์์ Confluence ๋ฌธ์ ์๋ํ๊ฐ ํ์ํ์ฌ REST API์ ๋ํ์ฌ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ์๋ค.
์์ ์ด ํ๊ฒฝ์ด Cloud ํ๊ฒฝ์ด๋, ์์ฒด ์๋ฒ๋์ ๋ฐ๋ผ ์กฐ๊ธ ๋ค๋ฅด๋ฏ๋ก ์๋ ๋งํฌ๋ค์ ์ฐธ๊ณ ํ๋ค.
API ๋ฌธ์
* Cloud
https://developer.atlassian.com/cloud/confluence/rest/v1/
* ์์ฒด ์๋ฒ
https://docs.atlassian.com/ConfluenceServer/rest/8.5.0-m04/#api/admin/group-create
2024.12.05 ํ์ฌ ๊ธฐ์ค, Cloud ํ๊ฒฝ์ Rest v2๋ฅผ ์ง์ํ์ง๋ง, ์์ฒด ์๋ฒ๋ v1๋ฐ์ ์ง์ํ์ง ์๋๋ค.
๋ญ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ฐ ์์ด ํฐ ์ฐจ์ด๋ ์์ ๋ฏ?
์ธ์ฆ
REST API ์์ฒญ์ ํ๊ธฐ ์ ๋จ๊ณ๋ก ํค๋์ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ด์์ผ ํ๋ค.
์ธ์ฆ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค.
1. ID / PASSWORD ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
2. ์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
1๋ฒ ๋ฐฉ๋ฒ์ ๋ณด์์ ์ผ๋ก ์ทจ์ฝํ๊ธฐ ๋๋ฌธ์ 2๋ฒ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ธ์ฆ ํ ํฐ์ ๋ฐ๊ธ ๋ฐ๋ ๋ฐฉ๋ฒ์ ์์ฒด ์๋ฒ๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋์ ๊ฐ์ด ๋ฐ๊ธ๋ฐ์ผ๋ฉด ๋๋ค.
[ํ๊ฒฝ ์ค์ ] -> [๊ฐ์ธ์ฉ ์ก์ธ์ค ํ ํฐ] -> [ํ ํฐ ๋ง๋ค๊ธฐ]
๋ง๋ค์ด์ง ํ ํฐ์ ๋ค์ ๋ฐ๊ธ๋ฐ์ง ๋ชปํ๋ฏ๋ก ์ค์ํ ์ฅ์์ ์ ์ฅํด๋๋ค.
ํ์ด์ฌ ์์
ID / PASSWORD ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
import requests
import base64
# ์ธ์ฆ ์ ๋ณด
email = "your-email@example.com"
password = "your-password"
# Basic ์ธ์ฆ ํค๋ ์์ฑ
auth_string = f"{email}:{password}"
auth_encoded = base64.b64encode(auth_string.encode()).decode() # Base64๋ก ์ธ์ฝ๋ฉ
# ์์ฒญ ํค๋์ Authorization ์ถ๊ฐ
headers = {
"Authorization": f"Basic {auth_encoded}",
"Accept": "application/json",
}
# Confluence API ์๋ํฌ์ธํธ
url = "https://your-confluence-site.atlassian.net/wiki/rest/api/content"
# GET ์์ฒญ
response = requests.get(url, headers=headers)
# ์๋ต ์ฒ๋ฆฌ
if response.status_code == 200:
print("Response Data:", response.json())
else:
print("Error:", response.status_code, response.text)
์ธ์ฆ ํ ํฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
import requests
# Confluence API ์ ๋ณด
BASE_URL = "https://your-confluence-site.atlassian.net/wiki/rest/api/content"
API_TOKEN = "your-api-token"
# ํ์ด์ง ์ ๋ณด
PAGE_ID = "123456" # ํ์ด์ง ID
# GET ์์ฒญ์ผ๋ก ํ์ด์ง ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
response = requests.get(
f"{BASE_URL}/{PAGE_ID}",
headers={
"Authorization": f"Bearer {API_TOKEN}", # Bearer ์ธ์ฆ
"Accept": "application/json" # JSON ์๋ต์ ์์ฒญ
}
)
# ์๋ต ์ฒ๋ฆฌ
if response.status_code == 200:
print("Page data:", response.json())
else:
print("Failed to fetch page data:", response.status_code, response.text)
'ETC > Others' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Flutter] Cannot fit requested classes in a single dex file ์๋ฌ ํด๊ฒฐ๋ฒ
[Flutter] Cannot fit requested classes in a single dex file ์๋ฌ ํด๊ฒฐ๋ฒ
2024.05.22 -
[Flutter] Flutter ์ค์น ๋ฐ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ธํ
[Flutter] Flutter ์ค์น ๋ฐ ๊ธฐ๋ณธ ํ๋ก์ ํธ ์ธํ
2024.01.28 -
[RabbitMQ] ์๋ฒ ๊ฐ ํต์ ๋ฉ์ธ์ง ํ, ์ค์น ๋ฐ ์คํ - 1
[RabbitMQ] ์๋ฒ ๊ฐ ํต์ ๋ฉ์ธ์ง ํ, ์ค์น ๋ฐ ์คํ - 1
2022.05.03