はじめに
Apitoreのハンズオンを企画しています。内容は「Web APIを使ってみよう」というものです。Web APIは使いこなせば便利なのですがイマイチまだ浸透していない印象があります。これまでに、JavaではAPIコールのサンプルコードを公開してきました。RubyではWeb APIコールをやったことがなかったので、SDK公開がてら勉強しました。
サンプルコード
環境
- ruby 2.2.5p319
- Faraday 0.11.0
- Faraday Middleware
- Windows 10 cygwin
説明
Rubyの場合はnet/http
を使うのがデファクトっぽいです。今回はFaradayを紹介します。FaradayはTwitterやInstagramにアクセスする(非公式)SDKにも使われています。
まずはFaradayをインストールします。今回はWindows10でCygwinを用いました。Rubyのバージョンが古いとgem install
のときにエラーが出るかもしれません。
$ gem install faraday
$ gem install faraday_middleware
準備が整ったのでAPIコールをしてみます。今回はApitoreの極性判定APIをコールしてみます。ApitoreではOauth2.0を採用しているので、以下のサンプルコードではOauth2.0を使うようにしています。不要な場合はoauth2
の行を削除してください。APIコールに必要なOauthのアクセストークンはあらかじめ取得しておきます。Apitoreでのアクセストークンの取得方法はこちらを御覧ください。
require "rubygems"
require "faraday"
require "faraday_middleware"
conn = Faraday::Connection.new(:url => 'https://api.apitore.com') do |builder|
builder.request :oauth2, "YOUR-ACCESS-TOKEN"
builder.request :url_encoded
builder.response :logger
builder.response :json, :content_type => /\bjson/
builder.adapter Faraday.default_adapter
end
response = conn.get do |req|
req.url '/api/11/sentiment/predict'
req.params['text'] = "今日は晴れで気持ちがいい。"
end
puts response.body["log"]
puts response.body["predict"]["sentiment"]
puts response.body["predict"]["score"]
YOUR-ACCESS-TOKEN
にアクセストークンを入力してください。今回のサンプルコードでは返り値をJsonとしています。builder.response :json
を記述しておくと、jsonを自動でパースしてresponse.body
をハッシュマップにしてくれるので使いやすいです。req.params
にGETパラメータをkey-valueで書きます。
おわりに
サンプルコードを実行してもらえば分かると思いますが、Rubyは簡単にWeb APIをコールできます。Faradayの記述ルールは汎用性が高く、レスポンスデータも扱いやすいので便利ですね。これを機会にApitoreのAPIのRubyサンプルコードも充実させていきます。