[#Node-RED] RedmineのREST API を呼ぶ
前回は「Hello World!」のWebサーバを構築しましたが、今回はクライアントとしてNode-REDからRedmineのREST APIを呼んでみます。なおNode-REDとRedmineはローカル環境で動作させました。
フローの説明
グレイ(青?)のインジェクトノードの左の四角いボタンを推すとタイムスタンプがmsg.payloadに入れられます(中身は使わずタイミングを与えています)。
- チェンジノードでmsg.headers(httpヘッダー情報)に「X-Redmine-API-Key=アクセスキー」をセットします。
- httpリクエストノードでhttp://Redmineサーバアドレス/redmine/issues.jsonを呼び出(GET)します。
- JSONが一つの文字列でmsg.payloadにセットされるのでファンクションノードでオブジェクトに変換します。
- デバッグノードでデバッグタブに出力します。
JavaSscriptはたった2行
なお、JavaScriptのコードはファンクションノードに書いた以下の2行だけです。
msg.payload = JSON.parse(msg.payload);
return msg;
Redmineの設定
REST API を有効にする:
管理 -> 設定 -> 認証で、「RESTによるWebサービスを有効にする」をチェック
アクセスキーの取得:
個人設定-> APIアクセスキー(右側に表示されます) の「表示」を押すとAPIアクセスキーが表示されます。必要に応じてリセットしてください。
認証が必要:
管理 -> 設定 -> 認証で「認証が必要」のチェックをしている場合は、ベーシック認証のユーザとパスワードを設定します。この場合はアクセスキーは不要な様です(Redmine 2.5.2で確認しました)。
注意点
デバッグ情報を全て表示したい場合は、REST APIのパラメータでlimitやoffsetを指定してください。途中で表示が切れる場合はNode-REDのsetteings.jsでdebugMaxLengthを変更してください。
おわりに
Node-REDなら、ちょっとした処理をとても簡単に実現できます。今回はインジェクトノードのボタンを押すことで実行しましたが、http、Twitter、メール、Websocket、tcp、udp、MQTT、シリアル、ファイル更新、などを入出力とする事ができます。
このように入力や出力を簡単に取り替えられるのは、ノード間のインターフェースがJSONで標準化されていることのほか、インジェクトノードやデバッグノードが良くできているので、作り易いからだと思います。
次回はその辺りを意識しながら説明してみようと思います([#Node-RED] Node-REDでTwitterのDMからRedmineのチケットを作成する)。
おまけのコード
ローカル環境やFREDでインポートできます(2016/4/18 追記:無料で利用できるのは72時間までになりました)。動かすには、サーバーアドレスとアクセスキーを変更する必要があります。ちなみにローカルIPアドレスですので、攻撃はできません。
« [#Node-RED] Hello World!からNode-REDを知る | トップページ | [#Node-RED] Node-REDでTwitterのDMからRedmineのチケットを作成する »
「Redmine」カテゴリの記事
- [#TiDD] プロジェクトを成功させるチケット管理(2017.07.02)
- Redmineが得意なプロジェクト(2016.09.20)
- 『Redmine実践ガイド』に書き忘れた事 - 管理を容易にするチケット番号の一意性 -(2016.08.11)
- [#Node-RED] Node-REDでTwitterのDMからRedmineのチケットを作成する(2016.04.17)
- [#Node-RED] RedmineのREST API を呼ぶ(2016.04.17)
「Node-RED」カテゴリの記事
- アイデアをシームレスに実装する - 考える道具としてのNode-RED -(2020.12.13)
- [#Node-RED] ファンクションノードのデバッグどうしてる?(2019.12.16)
- Node-RED: joinノードでタイムアウト処理(2018.12.25)
- Node-REDで世界が変わる!(2018.12.01)
- デブサミ関西でNode-REDとペンギンと勇気の話をしました #devsumiB(2018.10.28)
この記事へのコメントは終了しました。
コメント