はじめに
Railsを開発している時に、外部サービスとAPIを使って連携したい時ってありませんか?
今回はそんなお悩みを解決しようと思います!
この記事の概要
外部APIのGETメソッドの叩き方を簡単に説明します!
ちなみに”叩く”とは、URLにアクセスすることを指します。
対象読者
- railsでの外部APIの叩き方を知らない人
筆者の環境
技術等 | バージョン |
---|---|
使用パソコン | MacBook Pro |
OS | macOS Monterey |
ruby | 2.7.4 |
実装
JSONPlaceholderについて
今回は、APIのGETをするテスト用のサービスに、JSONPlaceholderというサイトを使用します!
参考
JSONPlaceholderJSONPlaceholder
このサイトはテスト用のエンドポイントを提供してくれているサービスです。
試しに、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メソッドを使って連想配列型(Hash)に変換しています。
以上で、変数res_json内にhttps://jsonplaceholder.typicode.com/usersに表示されている文字が連想配列として格納されました。
このデータを画面そのまま表示させたかったら、@マークでインスタンス変数にしてあげて下さい。
DBに保存したかったら、each文で格納させてあげても良いですね。
終わりに
繰り返しになりますが、今回はGETメソッドを叩く方法のみを載せました。
実際の業務では、このデータを加工したりする必要があると思います。
また、取得できなかった場合の例外処理も必要になります。
まずは取得のみからはじめて挙動を確認してみて下さい😎
Railsの勉強をしたい方はこの本が参考になるかと思いますので興味がある方は是非読んで見て下さい🙇♂️