FaradayとHttpartyでクッキーを付与したい場合

同一ドメインなんだけどホスト名が違うシステムがあり、WEBサーバーからApiサーバーへjsonを取得するべくgetリクエストを投げる。
その際にWEBサーバーでログイン時に発行されたクッキーをリクエストに付与してapiサーバーではそのクッキーからユーザを特定するような処理が必要になった。

FaradayとHttpartyでクッキーを付与する方法を調べた。

Faraday

miyagawa/faraday-cookie_jarというクッキーをよしなに扱ってくれるみたいですが、特に使わなくてもいけました。

1
2
3
4
5
6
7
8
9
10
11
client = Faraday.new 'http://example.com/api/list' do |b|
  b.request :json
  b.request :url_encoded
  b.adapter Faraday.default_adapter
end

res = client.get '' do |req|
  req.headers['Cookie'] = request.headers["HTTP_COOKIE"]
end

puts res.body

Httparty

1
2
3
4
5
include HTTParty

self.default_cookies.add_cookies(cookies.to_h)
res = self.get('http://example.com/api/list')
p res.inspect

お手軽ですね!

2015年10月19日追記

Httpartyのヘッダに乗せるタイプ

1
2
3
4
include HTTParty

res = self.get('http://example.com/api/list', headers: "Cookie" => request.headers["HTTP_COOKIE"])
p res.inspect

Comments