株式会社スマレジの開発部でスマレジのサーバサイドを作っています

PostmanでRedmine APIを実行してみる

こんにちは!株式会社スマレジ、エンジニアのmasaです。

3連休の真ん中ですが、皆様いかがお過ごしでしょうか?
masaは久々に実家に帰って親に顔を見せたりしております。

さて、今日からはまたしばらく開発記事になる予定です。

Redmineのメンテが大変…

思ったことないですか?masaは最近思うことがしばしばございます。

といいますのも、現在スマレジではスマレジ4.0に使う新APIを絶賛開発中でございます。

画面やら帳票やらがない分、基盤さえできてしまえば、実装自体はアプリの機能拡張よりカンタンなAPI開発ですが、いかんせんスマレジは機能が多いので、APIの数も増えます。しかし、規模が増えようともその工数やらスケジュールやらは自己管理&メンバーへの共有は常に必要ですし、当然そのコストは実装規模に比例して増大します。

Redmineを使ったチケットドリブン開発はPJ管理に便利な反面、画面からAPI一つ一つの作業チケットを作成するのは意外に疲れますし、あまりルーティンワークに時間はかけたくないのです。

API開発という切り口で言えば、個々のチケットが似通ってくるので共通化して、楽できないかなーというのが今回のお話でございます。

 

Redmine API

RedmineにはREST APIが用意されているので、まずはそれを試しに触ってみました。

最近個人的にRedmineを立てたので今回はそれを使います。

(その時のブログ↓)

masa2019.hatenablog.com


 さすが天下のRedmineだけあって、APIに関する記事はかなり豊富でした。
ただ、やはり古めのPJ管理ツールなのもあってか、最近の環境での連携例は少なめでしたね。(2019年代の記事はみつからなかったです。)

その中でも下記のサイトにお世話になりました。

https://www.r-labs.org/projects/r-labs/wiki

Postmanで実行してみる

取得についてはとてもシンプルで、例えばチケットを取ってきたいのであれば、

{RedmineのURL}/issues.(json or xml)?key=<apiのアクセスキー>

 こんな感じでjsonxmlをお好みで取得できます。

アクセスキーの取得は上記のr-Lab様のサイトに説明がありますのでそちらをご覧ください。

 

f:id:masa2019:20200223223532p:plain

実行例

実行すると、こんな感じでチケット情報を一覧取得できます。

次に、チケット作成ですが、こちらもシンプルです。

f:id:masa2019:20200224232049p:plain

実行例


画像を見たらわかるように、

  • HTTP_METHOD:POST
  • Body:raw(JSON)

にセットし必須絡むとして設定した項目をJSON形式でBodyに記載します。

レスポンスは

{
    "issue": {
        "id"3,
        "project": {
            "id"1,
            "name""練習プロジェクト"
        },
        "tracker": {
            "id"1,
            "name""設計"
        },
        "status": {
            "id"1,
            "name""未着手"
        },
        "priority": {
            "id"1,
            "name""5(標準)"
        },
        "author": {
            "id"1,
            "name""Redmine Admin"
        },
        "subject""Example",
        "description"null,
        "start_date""2020-02-23",
        "due_date"null,
        "done_ratio"0,
        "is_private"false,
        "estimated_hours"null,
        "total_estimated_hours"null,
        "created_on""2020-02-23T13:39:20Z",
        "updated_on""2020-02-23T13:39:20Z",
        "closed_on"null
    }
}

 こんな感じで登録したチケット情報が帰ってきます。