Ruby on RailsにてAPI Clientとして使用できるgemについてどんなものがあるのか簡単に概要をまとめてみました。
ActiveResource
Railsの標準機能としてRails2にて登場しましたが、Rails4以降は標準機能から分離されています。
REST APIを使用するRailsアプリケーションにおいて、ActiveRecordのような振る舞いで実装が可能です。
もともと標準機能として存在していただけに、使い方に関する文献は多いです。
https://github.com/rails/activeresource
Her
ORM機能とHTTP Client機能が分離されているのが特徴です。
Her::Modelを使用するモデルにincludeすることで、ActiveRecordのように操作することができます。
https://github.com/remiprev/her
ActiveRestClient
Herよりも後に登場したgemです。これもActiveRecordのようにモデルを操作することができます。
wikiにはActiveResourceは、リソースの命名規則がRailsに従っていない場合は機能せず、柔軟性がないとの記述がありますが、ActiveResourceを使っていて特にこれらを問題に感じたことはないです。※あくまで主観です。
wikiにこのgemは更新していないので、Flexirestを参照してくれと記載されています。
https://github.com/whichdigital/active-rest-client
Spyke
他のgemと同様にActiveRecordのように操作することができます。
Herはパフォーマンスの問題とメンテナンスがあまり行われないので、Herからインスピレーションを受けて新しく作りましたとwikiに書いてあります。
大量のJSONの高速処理と書いてあるので、パフォーマンス面に力を入れているようですね。
https://github.com/balvig/spyke
Flexirest
ActiveRestClientの作成者のひとりがActiveRestClientに代わるgemとして作成したものです。
ActiveRestClientと似ているが、柔軟性の面で優れているとのことです。
https://github.com/flexirest/flexirest
まとめ
どのgemもActiveRecordのように振る舞うことを全面でアピールしています。
簡単にですが一覧に現時点(2019/12/16)での各gemの情報をまとめてみました。
gem | Github スター数 | 登場 | 最新バージョン | 公開日 | リリース数 |
---|---|---|---|---|---|
ActiveResource | 960 | 2013年 | v5.1.0 | 2018年11月03日 | 5 |
Her | 1,860 | 2012年 | v1.1.0 | 2019年02月14日 | 65 |
ActiveRestClient | 389 | 2013年 | v1.0.3 | 2014年07月30日 | 87 |
Spyke | 562 | 2014年 | v5.3.4 | 2019年05月31日 | 49 |
Flexirest | 136 | 2013年 | v1.8.7 | 2019年12月06日 | 121 |
スター数で見るとHerが一番人気ですね。
2019年もリリースがあるのは、Her、Spyke、Flexirestでした。ActiveResourceは元々標準機能に備わっていただけあり、成熟期は終わっているということでしょう。
また製作者がFlexirestのwikiに書いていたように、ActiveRestClientはもう更新が止まってしまっているようです。
有名どころはActiveResourceだと思いますが、こういった観点で見るとまたどれを使うべきなのか悩みどころですね。
処理速度や使いやすさの観点からの比較検討が今後の課題です。