概要
APIのパラメータ設定が面倒で、URLから取れないかなぁと思って試しました。
Redmineのチケットをフィルタリングする部分で利用しました。
Redmine APIのissue.filter関数以外でこの方法を使用できるかどうかは未知数です。
誰か試したら教えてください。
内容
urllibのparse関数を利用します。
get_query.py
import urllib.parse
import re
def get_params(query_url):
# URLをパースする
parsed_url = urllib.parse.urlparse(query_url)
# クエリ部分をさらにパースする
parsed_query = urllib.parse.parse_qs(parsed_url.query)
# Redmine APIはプロジェクトidも必要なのでページパスから取得します。
parsed_query['project_id'] = re.findall(r"projects/(.+?)/issues", query_url)
return parsed_query
main.py
from redminelib import Redmine
redmine = Redmine("http://your redmine home URL", key="your access api key")
query_url = r"http://your redmine query URL"
#get_params関数の返り値は辞書型で帰ってくるので、可変長引数(**)を利用してAPIへ渡します。
issue_list = redmine.issue.filter(**get_params(query_url))
print(issue_list)
参考
- urllib.parse — URL を解析して構成要素にする(公式)
- Issue — Python-Redmine documentation(公式)
- PythonのURLとクエリパラメータのパースまとめ
- Pythonの可変長引数(*args, **kwargs)の使い方
最後に
またRedmineネタだけどほんとはJiraとか使いたい。
内容に間違いや不明な点があればご指摘ください。