はじめに
この記事は, rubyでweb apiの使いかたを理解するための初心者向けの記事です。具体的には, rubyで郵便APIを使用し, コンソールに表示するまでを行います。
バージョン : ruby3.0.0
WebAPIとは何か
WebAPIの概説
みなさん、WebAPIって何かわかりますか!?
シーン....
おっと(笑)。でも大丈夫ですよ、丁寧に説明していこうと思います。厳密な定義などが知りたい方は, 記事に記載されている公式リファレンスを参照してくださいね。
まず、APIについて見ていきましょう。Mozzilaの公式リファレンスの説明によるとAPIは次のように説明されています。
Application Programming Interfaces (APIs) は、開発者が複雑な機能をより簡単に作成できるよう、プログラミング言語から提供される構造です。
平たく言うと, 複雑なコードで書かれた難しいプログラムを, 誰でも簡単に扱えるようにしたものです。
そして, このAPIのうちサーバからデータ取得をする API
のことをWebAPIと呼びます。
例えば、WebAPIでは,TwitterAPIがありますが、これは最新のツイートをwebサイトに表示するという機能を簡単に扱えるようにしてあるAPIです。他にも,GoogleAPIやFacebook API、YouTube APIなど様々なAPIが提供されています。
WebAPIを使ってみよう
流れ
それでは、実際にWebAPIを使っていきましょう。
流れとしては、
①uriモジュールを使って, URIをパースする (URIの解析)
②net/httpモジュールを使って, APIにget通信でAPIのサーバにアクセスして、サーバからJSON形式の結果をもらう。(HTTP通信でAPIにアクセス)
③jsonモジュールを使って, JSON形式をhash形式に変換する (JSONの結果をHashに変換する)
④digメソッドでhashから値を取り出す(Hashから値を取り出す)
郵便APIの構成
ここで試しに使う郵便APIは,以下のとおりです。?以降のzipcode=〇〇に郵便番号を指定する事で住所を返してくれます。ブラウザでこのコードにアクセスすると, APIにアクセスした結果が表示されます。
http://zipcloud.ibsnet.co.jp/api/search?zipcode=2500011
実装(ハンズオン)
最後にコードで実装すると次のようになります
require 'net/http'
require 'uri'
require 'json'
#①uriモジュールを使って, URIをパースする (URIの解析)
uri = URI.parse('http://zipcloud.ibsnet.co.jp/api/search?zipcode=2500011')
#②net/httpモジュールを使って, APIにget通信でAPIのサーバにアクセスして、サーバからJSON形式の結果をもらう。(HTTP通信でAPIにアクセス)
json = Net::HTTP.get(uri)
#③jsonモジュールを使って, JSON形式をhash形式に変換する (JSONの結果をHashに変換する)
#symbolize_names: trueでシンボルのキーをシンボルのままでhashにする。
result = JSON.parse(json, {symbolize_names: true})
#④digメソッドでhashから値を取り出す(Hashから値を取り出す)
puts result.dig(:results, 0,:address1)
これを実行すると, 神奈川県
という結果が返ってきます
参考記事
・MDN Web Docs | Web APIの紹介
・Ruby 3.0.0 リファレンスマニュアル library net/http
・Ruby 3.0.0 リファレンスマニュアル Hashクラス
・Ruby 3.0.0 リファレンスマニュアル JSON.#parce
・WebAPIについての説明
・郵便番号API
・RubyでJSON形式の結果が帰ってくるURLをParceする
・RubyでネストしたHashやArrayから値を取り出す方法いろいろ