|
REST APIでRedmineアクセス(3)
2025/06/14 |
| [Prev] [Next] [Top] , Python [Prev] [Next] , [Python Top] |
今回はWikiの編集
Project情報の取得
import requests
import json
# Project情報のURL
strUrl = 'http://localhost:3000/projects.json'
# requestsヘッダ
dicHead = {
'X-Redmine-API-Key': '8dc1f63aeうんぬん',
'Content-Type': 'application/json'
}
# requests get実行
resProjects = requests.get(strUrl, headers=dicHead)
# 実行ステータス取得
print(f"request_status=[{resProjects.status_code}]")
# 情報表示
if resProjects.status_code < 300:
# request response jsonデータをdicへ変換
dicProjects = resProjects.json()
# dicデータを表示用jsonへ整形変換
jsoProjects = json.dumps(dicProjects, indent=2, ensure_ascii=False)
# project情報表示
print(jsoProjects)
>test0.py
request_status=[200]
{
"projects": [
{
"id": 1,
"name": "Sandbox",
"identifier": "sandbox",
"description": "Test project",
...中略...
}
],
"total_count": 1,
"offset": 0,
"limit": 25
}
Project毎Wikiページ名リストの取得
import requests
import json
# Project毎Wikiページ名情報のURL
strProjId = 'sandbox'
strUrl = f"http://localhost:3000/projects/{strProjId}/wiki/index.json"
# requestsヘッダ
dicHead = {
'X-Redmine-API-Key': '8dc1f63aうんぬん',
'Content-Type': 'application/json'
}
# requests get実行
resWikis = requests.get(strUrl, headers=dicHead)
# 実行ステータス取得
print(f"request_status=[{resWikis.status_code}]")
# 情報表示
if resWikis.status_code < 300:
# request response jsonデータをdicへ変換
dicWikis = resWikis.json()
# dicデータを表示用jsonへ整形変換
jsoWikis = json.dumps(dicWikis, indent=2, ensure_ascii=False)
# Wiki情報表示
print(jsoWikis)
>test1.py
request_status=[200]
{
"wiki_pages": [
{
"title": "Sub_page_0",
"parent": {
"title": "Wiki"
},
"version": 1,
"created_on": "2025-06-13T04:36:33Z",
"updated_on": "2025-06-13T04:36:33Z"
},
{
"title": "Wiki",
"version": 1,
"created_on": "2025-06-13T04:31:21Z",
"updated_on": "2025-06-13T04:31:21Z"
}
]
}
Wikiページ記述情報の取得
import requests
import json
# WikiページのURL
strProjId = 'sandbox'
strWikiId = 'Sub_page_0'
strUrl = f"http://localhost:3000/projects/{strProjId}/wiki/{strWikiId}.json"
# requestsヘッダ
dicHead = {
'X-Redmine-API-Key': '8dc1f63aeうんぬん',
'Content-Type': 'application/json'
}
# requests get実行
resWiki = requests.get(strUrl, headers=dicHead)
# 実行ステータス取得
print(f"request_status=[{resWiki.status_code}]")
# 情報表示
if resWiki.status_code < 300:
# request response jsonデータをdicへ変換
dicWiki = resWiki.json()
# dicデータを表示用jsonへ整形変換
jsoWiki = json.dumps(dicWiki, indent=2, ensure_ascii=False)
# Wiki記述情報表示
print(jsoWiki)
>test2.py
request_status=[200]
{
"wiki_page": {
"title": "Sub_page_0",
"parent": {
"title": "Wiki"
},
"text": "# Project: Sandobox: Sub wiki page [0]\r\n* サブWikiページ[0]",
"version": 1,
"author": {
"id": 5,
"name": "Altmo Test"
},
"comments": "",
"created_on": "2025-06-13T04:36:33Z",
"updated_on": "2025-06-13T04:36:33Z"
}
}
Wikiページ記述の変更
import requests
import json
# WikiページのURL
strProjId = 'sandbox'
strWikiId = 'Sub_page_0'
strUrl = f"http://localhost:3000/projects/{strProjId}/wiki/{strWikiId}.json"
# requestsヘッダ
dicHead = {
'X-Redmine-API-Key': '8dc1f63aeうんぬん',
'Content-Type': 'application/json'
}
# requests get実行
resWiki = requests.get(strUrl, headers=dicHead)
# 実行ステータス取得
print(f"request_get_status=[{resWiki.status_code}]")
# 取得jsonデータをdicに変換
dicWiki = resWiki.json()
# 変更前記述表示
print(f"変更前記述:\n{dicWiki['wiki_page']['text']}")
# textキーの内容を変更
dicWiki['wiki_page']['text'] += "\n* REST APIで追加した記述"
print(f"変更後記述:\n{dicWiki['wiki_page']['text']}")
# putのためにdicデータをjsonへ変換
jsoWiki = json.dumps(dicWiki)
# requests put実行
resWikiPut = requests.put(strUrl, headers=dicHead, data=jsoWiki)
# ステータス表示
print(f"request_put_status=[{resWikiPut.status_code}]")
>test3.py request_get_status=[200] 変更前記述: # Project: Sandobox: Sub wiki page [0] * サブWikiページ[0] 変更後記述: # Project: Sandobox: Sub wiki page [0] * サブWikiページ[0] * REST APIで追加した記述 request_put_status=[204]
Wikiページの追加
![]() ![]() ![]()
import requests
import json
# 新規追加でもWikiページを含むURLを設定
strProjId = 'sandbox'
strWikiId = 'Sub_page_1'
strUrl = f"http://localhost:3000/projects/{strProjId}/wiki/{strWikiId}.json"
print(f"new_wiki_url:[{strUrl}]")
# requestsヘッダ
dicHead = {
'X-Redmine-API-Key': '8dc1f63aうんぬん',
'Content-Type': 'application/json'
}
# Wikiのdicデータ作成
dicWiki = {
'wiki_page': {
'text': "# Project: Sandbox: Sub wiki page [1]\n* REST APIで追加",
'parent_title': 'Wiki'
}
}
# 記述内容表示
print(f"記述内容:\n{dicWiki['wiki_page']['text']}")
# dicデータをjsonに変換
jsoWiki = json.dumps(dicWiki)
# requests put実行 (新規Wikiでもpostではなくput)
resWiki = requests.put(strUrl, headers=dicHead, data=jsoWiki)
# 実行ステータス取得
print(f"request_status=[{resWiki.status_code}]")
>test4.py new_wiki_url:[http://localhost:3000/projects/sandbox/wiki/Sub_page_1.json] 記述内容: # Project: Sandbox: Sub wiki page [1] * REST APIで追加 request_status=[201] ![]()
Wikiページの削除
import requests
import json
# 削除対象WikiページのURLを設定
strProjId = 'sandbox'
strWikiId = 'Sub_page_1'
strUrl = f"http://localhost:3000/projects/{strProjId}/wiki/{strWikiId}.json"
print(f"delete_wiki_url:[{strUrl}]")
# requestsヘッダ
dicHead = {
'X-Redmine-API-Key': '8dc1f63aeうんぬん',
'Content-Type': 'application/json'
}
# requests delete実行
resWiki = requests.delete(strUrl, headers=dicHead)
# 実行ステータス取得
print(f"request_status=[{resWiki.status_code}]")
>test5.py delete_wiki_url:[http://localhost:3000/projects/sandbox/wiki/Sub_page_1.json] request_status=[204] 次回
|
Notes
|
|
2025-06-14: 初版 2025-06-15: 添付ファイルの記述を移動 Copyright(C) 2025 Altmo
本HPについて |
| [Prev] [Next] [Top] , Python [Prev] [Next] , [Python Top] |