無料ブログはココログ

« [#Node-RED] Hello World!からNode-REDを知る | トップページ | [#Node-RED] Node-REDでTwitterのDMからRedmineのチケットを作成する »

[#Node-RED] RedmineのREST API を呼ぶ

前回は「Hello World!」のWebサーバを構築しましたが、今回はクライアントとしてNode-REDからRedmineのREST APIを呼んでみます。なおNode-REDとRedmineはローカル環境で動作させました。

20160414_233706

フローの説明

グレイ(青?)のインジェクトノードの左の四角いボタンを推すとタイムスタンプがmsg.payloadに入れられます(中身は使わずタイミングを与えています)。

  1. チェンジノードでmsg.headers(httpヘッダー情報)に「X-Redmine-API-Key=アクセスキー」をセットします。
  2. httpリクエストノードでhttp://Redmineサーバアドレス/redmine/issues.jsonを呼び出(GET)します。
  3. JSONが一つの文字列でmsg.payloadにセットされるのでファンクションノードでオブジェクトに変換します。
  4. デバッグノードでデバッグタブに出力します。

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」カテゴリの記事

Node-RED」カテゴリの記事

コメント

この記事へのコメントは終了しました。