アクションの中で直接外部APIをやりとりをしたくない
wrappers/**/client_wrapper.rb
ClientWrapperの役割
- 外部APIへリクエストするClientのアプリケーション上でのinterface
- 各interface(publicメソッド)ではアプリケーションの文脈において名前をつける(例1)
- responseをjson.parse、keyのunderscore化(deep_transform_keys)をしてもよい
- publicメソッドでclientからresponseを受け取ったあと、独自のロジックを入れないこと
Clientの役割
- 外部APIに直接リクエストし、レスポンスを受け取るオブジェクト
- HttpartyやNet::HTTPなどで直接URLにリクエストする
- レスポンスの加工のロジックは入れない
- 各interfaceは外部APIのエンドポイントに沿った命名にする
参考
https://medium.com/selleo/essential-rubyonrails-patterns-clients-and-wrappers-c19320bcda0
https://www.twilio.com/blog/2015/10/4-ways-to-parse-a-json-api-with-ruby.html