RubyでHTTPリクエストを投げて返ってくるJSONをParseするとかいうよくあるやつ with Net::HTTP, open-uri
タイトル長えw
さて、HTTP リクエストするとJSON が返ってくるようなAPI でなんやかんや処理をすることが割りとよくあるのだが、すぐに忘れてしまうのでメモメモ。
https://api.example.com/smaple.json にHTTP GET リクエストを投げるとJSON が返ってくる場合を想定します。
Net::HTTP を使うとこんなふうに書ける。
require require 'net/http' require 'uri' require 'json' uri = URI.parse('https://api.example.com/smaple.json') https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true res = https.start { https.get(uri.request_uri) } if res.code == '200' result = JSON.parse(res.body) # Railsだったらこう書ける`require 'json'`なしで # result = ActiveSupport::JSON.decode res.body # resultを使ってなんやかんや処理をする else puts "OMG!! #{res.code} #{res.message}" end
ただし、Ruby にはopen-uri と呼ばれるNet::HTTP やNet::HTTPS をより簡単に利用するためのラッパーがあり、それを使うともっとスッキリ書けます。
require 'open-uri' res = open('https://api.example.com/smaple.json') code, message = res.status # res.status => ["200", "OK"] if code == '200' result = ActiveSupport::JSON.decode res.read # resultを使ってなんやかんや処理をする else puts "OMG!! #{code} #{message}" end
というふうに書けます。
wrapper を"ラッパー"とカタカナで書くと、今にも小気味のよいビートが聞こえてきそうだから不思議なものである。 だいたいこんなような感じ。
- 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
- 出版社/メーカー: 技術評論社
- 発売日: 2013/08/10
- メディア: 大型本
- この商品を含むブログ (20件) を見る