
【Rails6】Railsでの外部APIのGET方法
はじめに
Railsで開発していて、外部サービスとAPIを使って連携したい時ってありませんか?
今回はそんなお悩みを解決しようと思います!
この記事の概要
外部APIのGETメソッドを叩く方法を簡単に説明します!
ちなみに「叩く」とは、URLにアクセスすることを指します。
対象読者
- Railsでの外部APIの叩き方を知らない人
筆者の環境
| 技術等 | バージョン |
|---|---|
| 使用パソコン | MacBook Pro |
| OS | macOS Monterey |
| Ruby | 2.7.4 |
実装
JSONPlaceholderについて
今回は、APIのGETをするテスト用のサービスに、JSONPlaceholderというサイトを使用します!
JSONPlaceholder - Free Fake REST API
jsonplaceholder.typicode.comこのサイトはテスト用のエンドポイントを提供してくれているサービスです。
試しに、https://jsonplaceholder.typicode.com/usersを開いてみてください。
仮のユーザーの一覧が出てきたかと思います。
今回はこのURLを対象として情報を取得していきます!
httpclientの導入
今回はhttpclientというgemを使用します。
# 略
gem 'httpclient'$ bundle installで、インストールします。
コードの記述
それでは、実際に記述をします。
今回は、usersコントローラーのindexメソッドの中で使用するものとします。
class UsersController < ApplicationController
require 'httpclient'
def index
client = HTTPClient.new
url = "https://jsonplaceholder.typicode.com/users"
response = client.get(url)
res_json = JSON.parse(response.body)
end
# 以下略
end順番に解説します!
require 'httpclient'このrequireでgemのhttpclientが使えるようになるので必ず記述してください!
client = HTTPClient.newこの行ではclientという変数にHTTPClientのインスタンスを格納しています。
url = "https://jsonplaceholder.typicode.com/users"
response = client.get(url)ここで、urlに格納したURLにhttpclientが用意してあるgetメソッドを使って外部からHTTPのGETメソッドを走らせています!
その結果をresponseという変数に格納しています。
res_json = JSON.parse(response.body)取得した情報はそのままだと文字列(String)になってしまい、扱いづらいです。
そこで、JSON.parseメソッドを使ってRubyのオブジェクト(ArrayやHash)に変換しています。
以上で、変数res_json内にhttps://jsonplaceholder.typicode.com/usersに表示されている文字が連想配列として格納されました。
このデータを画面そのまま表示させたかったら、@マークでインスタンス変数にしてあげてください。
DBに保存したかったら、each文で格納させてあげても良いですね。
終わりに
繰り返しになりますが、今回はGETメソッドを叩く方法のみを載せました。
実際の業務では、このデータを加工したりする必要があると思います。
また、取得できなかった場合の例外処理も必要になります。
まずは取得のみからはじめて挙動を確認してみてください😎
Railsの勉強をしたい方はこの本が参考になるかと思いますので興味がある方はぜひ読んで見てください🙇♂️

