search
LoginSignup
6

More than 1 year has passed since last update.

posted at

updated at

RubyでJson形式の結果を返すWebAPIを使ってみよう(ハンズオン)

はじめに

この記事は, 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

Screen Shot 2021-04-14 at 18.01.53.png

実装(ハンズオン)

最後にコードで実装すると次のようになります

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から値を取り出す方法いろいろ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6