概要
net/http は Ruby に標準でインストールされている HTTP のクライアントライブラリです
Ruby にはいろいろな HTTP のクライアントライブラリがありますがこれは標準で使えます
gem をインストールするまでもない場合は net/http を使えば OK です
簡単な使い方のサンプルを紹介します
環境
- macOS 10.13.4
- Ruby ruby 2.5.1p57
とりあえず GET する
require 'net/https'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new uri.request_uri
res = http.request req
pp res.body
GET 時にクエリストリングを設定する
require 'net/https'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
p = { "key" => "value" }
uri.query = URI.encode_www_form(p)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new uri.request_uri
res = http.request req
pp res.body
ヘッダを設定する
require 'net/https'
require 'json'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new uri.request_uri
req['X-Test-Header'] = 'test_header'
res = http.request req
pp JSON.parse(res.body)['headers']['HTTP_X_TEST_HEADER']
req にハッシュとして追加すれば OK です
Content-Type
などは専用のメソッドがあります
req.content_type = 'text/xml'
レスポンスヘッダを取得する
require 'net/https'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
p = { "key" => "value" }
uri.query = URI.encode_www_form(p)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Get.new uri.request_uri
res = http.request req
res.each_header { |k,v|
p "#{k} => #{v}"
}
p res['content-length']
pp res.body
res.each
は Enumerator が返ってくるので注意
POST する
require 'net/https'
require 'json'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new uri.request_uri
res = http.request req
pp JSON.parse(res.body)['method']
パラメータ付きで POST する
require 'net/https'
require 'json'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new uri.request_uri
req.content_type = 'application/json'
req.body = { 'test_key' => 'test_value' }.to_json
res = http.request req
pp JSON.parse(res.body)['body']
XML をボディに設定する
require 'net/https'
require 'json'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Post.new uri.request_uri
req.content_type = 'text/xml'
req.body = '<Root><Name>bob</Name><Age>30</Age></Root>'
res = http.request req
pp JSON.parse(res.body)['body']
DELETE をコールする
require 'net/https'
require 'json'
uri = URI.parse 'https://kaka-request-dumper.herokuapp.com/'
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
req = Net::HTTP::Delete.new uri.request_uri
res = http.request req
pp JSON.parse(res.body)['method']
http にアクセスしたい場合
net/https
の代わりに net/http
を require し
http.use_ssl = true
の設定を削除すればそれ以外のコードをそのまま使えます
最後に
net/http
の簡単な使い方を紹介しました
他にもいろいろな使い方があるので詳細は公式のドキュメントを見ることをおすすめします
0 件のコメント:
コメントを投稿