Faradayのミドルウェアを使ってみたので簡単にまとめます。
##Faradayとは?
rubyで書かれたHTTPクライアントライブラリであり、
これを利用してRailsプロジェクトから外部APIにアクセスすることができます。
##Faradayのミドルウェアとは?
Faradayにはリクエストやレスポンス処理についてカスタマイズできるミドルウェアがあります。
RequestミドルウェアとResponseミドルウェアの2つがあり、これを利用することによってリクエスト時の認証情報を付与したり、通信についてログに書き出すことができます。
シンボルを使って以下のように使うことができます。
Faraday.new(url: 'https://test.com') do |builder|
# ミドルウェアを使用する
builder.request :url_encoded
builder.response :logger, Config.logger if Config.enable_logger
end
#Requestミドルウェアについて
Requestミドルウェアはリクエスト送信前にリクエストの詳細を設定することができます。
ここでは2つのミドルウェアを紹介します。
認証ミドルウェアはAuthorizationヘッダーの設定ができ、
UrlEncodedミドルウェアはキーと値のペアのハッシュをURLエンコードされたリクエスト本文に変換することができます。
使用例
# 認証ミドルウェア
builder.request :basic_auth, "username", "password"
builder.request : authorization :Basic, "aut_key"
# UrlEncodedミドルウェア
builder.request :url_encoded
#Responseミドルウェアについて
responseミドルウェアはレスポンスを受け取る際にレスポンスの詳細を設定することができます。
ここではLoggerミドルウェアを紹介します。
Loggerミドルウェアを使うと、リクエストとレスポンスの本文およびヘッダーをログに出力することができます。
またフィルター機能もあり、正規表現を利用して機密情報をフィルタリングすることができます。
使用例
# Loggerミドルウェア
builder.response :logger
# フィルター
builder.response :logger do | logger |
logger.filter(/(password=)(\w+)/, '\1[REMOVED]')
end
#faraday_middlewareを使うとさらに便利!
faraday_middlewareというgemをいれると使えるミドルウェアがさらに増えます。
例えば、ParseJsonクラスを使って、parser_optionsとcontent_typeを指定すればハッシュキーをシンボルにしてJSONパースすることもできます。
使用例
builder.response :json, parser_options: { symbolize_names: true }, content_type: 'application/json'
##参考ドキュメント
https://lostisland.github.io/faraday/
https://lostisland.github.io/faraday/middleware/list