以前、サイボウズガルーンの予定をSlackからインタラクティブにリスケできるBotを作ったのですが、このとき実はガルーンのREST APIクライアントを自作しました。
このエントリでは、自作したガルーンREST APIクライアントの話をしたいと思います。
GitHubリポジトリは下記です。
GoでAPIクライアントを書くときに最も面倒なのは、APIレスポンスに合わせて構造体を定義する作業です。
が、JSONから構造体定義を作ってくれるとても便利なサイトがあり、今回利用したのですが、ぜひみなさんも使ってください。
パッケージの依存関係管理ツールはdepが便利です。Rubyで言うところのbundler、Pythonで言うところのPipenvでしょうか。
dep ensure
すると import
文を解析して依存パッケージを取得してくれます。
先に構造体とJSONを定義しておいたおかげで、GoにおけるJSONのデコードは驚くほど簡単です。
デコード後に当てはめたいstructのアドレスを渡すだけです。structが不定のときはinterfaceにします。こんな感じです。
APIクライアントの場合、期待するレスポンスが返ってきているかどうか(エラーかどうか)はレスポンスステータスによって変わってくるので、ステータスコードによってデコードするstructを変えています。
以上です。
サイボウズガルーンがどのくらいの会社で使われているかはちょっとわからないですが、もしバグや機能追加などありましたらGitHub IssueやPRお待ちしております。
コメントを送る
コメントはブログオーナーのみ閲覧できます