Symfoware

Symfowareについての考察blog

PythonからREST API経由でRedmineにチケットを登録する(XML,JSON使用)

RedmineにREST APIがあることを知りました。
http://www.redmine.org/projects/redmine/wiki/Rest_api

Pythonから使ってみます。


APIキーの準備



サンプルとして、チケットの登録をやってみたいと思います。
データの参照には不要っぽいのですが、登録にはAPIキーが必要なので、
先に作っておきます。

[管理] - [設定]から、[認証]タブを選択します。
「RESTによるWebサービスを有効にする」という項目があるのでチェック。
保存を実行します。

358_01.png


右上の[個人設定]を選択。
「APIアクセスキー」という項目が表示されるので、「表示」をクリックします。
そうすると、そのユーザーのAPIアクセスキーが表示されます。

358_02.png


APIアクセスキーはユーザーごとに発行されるようです。
使用するアクセスキーに該当するユーザー名でチケットの登録が行われます。







XMLによる登録



XML形式でチケットを登録する例です。
http://www.redmine.org/projects/redmine/wiki/Rest_Issues

サンプルはこんな感じになりました。


  1. # -*- coding:utf-8 -*-
  2. import urllib2
  3. # 個人設定画面に表示されているAPIキー
  4. api_key = 'ea87faaba9549b5fdbea7655bf7de323cd6c118e'
  5. # 登録用のデータ
  6. xml = """<?xml version="1.0"?>
  7. <issue>
  8. <project_id>test_project</project_id>
  9. <subject>自動登録テスト</subject>
  10. <description>チケットの詳細です</description>
  11. <tracker_id>2</tracker_id>
  12. </issue>"""
  13. # APIのURL
  14. # 今回、RedmineのURLはhttp://192.168.1.102/redmine/
  15. # サブディレクトリで公開している
  16. url = 'http://192.168.1.102/redmine/issues.xml'
  17. # Content-Type:text/xml
  18. # X-Redmine-API-Key:[APIキー]
  19. # method:post
  20. request = urllib2.Request(url, data=xml)
  21. request.add_header('Content-Type', 'text/xml')
  22. request.add_header('X-Redmine-API-Key', api_key)
  23. request.get_method = lambda: 'POST'
  24. # 登録実行
  25. response = urllib2.urlopen(request)
  26. ret = response.read()
  27. print 'Response:', ret




「project_id」は登録したいプロジェクトの識別子。
「tracker_id」に2を指定して、「機能」で追加していみます。


実行した後のレスポンスは、登録したチケットのxml表現となります。
ちゃんと登録出来ました。

358_03.png





JSONによる登録



JSON形式による登録もサポートされています。

サンプルはこんな感じになりました。


  1. # -*- coding:utf-8 -*-
  2. import urllib2
  3. import json
  4. # 個人設定画面に表示されているAPIキー
  5. api_key = 'ea87faaba9549b5fdbea7655bf7de323cd6c118e'
  6. # 登録用のデータ
  7. issue = {}
  8. issue[u'project_id'] = u'test_project'
  9. issue[u'tracker_id'] = 3
  10. issue[u'subject'] = u'JSONからの自動登録テスト'
  11. issue[u'description'] = u'JSONから登録してみます。'
  12. data = {}
  13. data[u'issue'] = issue
  14. # JSON形式の文字列を取得
  15. jsonstr = json.dumps(data)
  16. # APIのURL
  17. # 今回、RedmineのURLはhttp://192.168.1.102/redmine/
  18. # サブディレクトリで公開している
  19. # jsonの場合は、拡張子に「json」を指定
  20. url = 'http://192.168.1.102/redmine/issues.json'
  21. # Content-Type:application/json
  22. # X-Redmine-API-Key:[APIキー]
  23. # method:post
  24. request = urllib2.Request(url, data=jsonstr)
  25. request.add_header('Content-Type', 'application/json')
  26. request.add_header('X-Redmine-API-Key', api_key)
  27. request.get_method = lambda: 'POST'
  28. # 登録実行
  29. response = urllib2.urlopen(request)
  30. ret = response.read()
  31. print 'Response:', ret




レスポンスは登録したチケットのJSON表現となります。
こちらもちゃんと登録出来ました。

358_04.png




添付ファイル付きの登録はこちら。
PythonからREST API経由でRedmineに添付ファイルを登録する(XML,JSON使用)
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/03/09(日) 15:32:40|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PythonからREST API経由でRedmineに添付ファイルを登録する(XML,JSON使用) | ホーム | FreeBSD 10.0でRedmine 2.5の環境構築(Nginx+Unicorn+PostgreSQL)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1321-38854312
この記事にトラックバックする(FC2ブログユーザー)