6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]Faradayのミドルウェアを使ってみる

Last updated at Posted at 2020-08-24

Faradayのミドルウェアを使ってみたので簡単にまとめます。

##Faradayとは?
rubyで書かれたHTTPクライアントライブラリであり、
これを利用してRailsプロジェクトから外部APIにアクセスすることができます。

##Faradayのミドルウェアとは?
Faradayにはリクエストやレスポンス処理についてカスタマイズできるミドルウェアがあります。
RequestミドルウェアとResponseミドルウェアの2つがあり、これを利用することによってリクエスト時の認証情報を付与したり、通信についてログに書き出すことができます。

シンボルを使って以下のように使うことができます。

api_client.rb
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エンコードされたリクエスト本文に変換することができます。

使用例

api_client.rb
# 認証ミドルウェア
builder.request :basic_auth, "username", "password"
builder.request : authorization :Basic, "aut_key"

# UrlEncodedミドルウェア
builder.request :url_encoded

#Responseミドルウェアについて
responseミドルウェアはレスポンスを受け取る際にレスポンスの詳細を設定することができます。
ここではLoggerミドルウェアを紹介します。
Loggerミドルウェアを使うと、リクエストとレスポンスの本文およびヘッダーをログに出力することができます。
またフィルター機能もあり、正規表現を利用して機密情報をフィルタリングすることができます。

使用例

api_client.rb
# 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パースすることもできます。

使用例

api_client.rb
builder.response :json, parser_options: { symbolize_names: true }, content_type: 'application/json'

##参考ドキュメント
https://lostisland.github.io/faraday/
https://lostisland.github.io/faraday/middleware/list

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?