Apitore blog

Apitoreを運営していた元起業家のブログ

RubyでAPIコールするならFaradayが簡単便利

はじめに

Apitoreのハンズオンを企画しています。内容は「Web APIを使ってみよう」というものです。Web APIは使いこなせば便利なのですがイマイチまだ浸透していない印象があります。これまでに、JavaではAPIコールのサンプルコードを公開してきました。RubyではWeb APIコールをやったことがなかったので、SDK公開がてら勉強しました。

サンプルコード

Github

環境

  • ruby 2.2.5p319
  • Faraday 0.11.0
  • Faraday Middleware
  • Windows 10 cygwin

説明

Rubyの場合はnet/httpを使うのがデファクトっぽいです。今回はFaradayを紹介します。FaradayはTwitterInstagramにアクセスする(非公式)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サンプルコードも充実させていきます。