【rails】HTTPClient를 사용해 외부 API에 접속하는 방법(QiitaAPI에 접속해 보았다)

소개



rails로 외부 API에 접속할 때는 gem의 HTTPClient를 사용합니다.
이번에는 예로 Qiita의 API에 연결하여 기사 목록을 가져옵니다.

HTTPClient 설치



Gemfile
gem 'httpclient'

터미널
$ bundle install

route.rb에 추가



엔드포인트는 /api/qiita입니다.

routes.rb
Rails.application.routes.draw do 
  namespace :api do 
    get '/qiita' to: 'qiita#index'
  end
end

QiitaAPI에 연결(Controller)



첫째, 가장 기본적인 형태입니다. (header 나 query를 지정하지 않는 get 요청)

controllers/api/qiita_controller.rb
class Api::QiitaController < ApplicationController
  # HTTPClientを呼び出す
  require 'httpclient'

  def index
    url = "https://qiita.com/api/v2/items"  # URLを設定
    client = HTTPClient.new                 # インスタンスを生成
    response = client.get(url)              # Getリクエスト
    render json: JSON.parse(response.body)  # 結果をjsonにパースして表示
  end
end

http://localhost:3000/api/qiita에 액세스하면 이런 식으로 데이터 목록이 json으로 반환됩니다.
성형하지 않기 때문에 매우 보기 어렵습니다.



다음에 header나 query를 지정하는 경우입니다.

controllers/api/qiita_controller.rb
class Api::QiitaController < ApplicationController
  # HTTPClientを呼び出す
  require 'httpclient'

  def index
    url = "https://qiita.com/api/v2/items"
    header = { Authorization: "Bearer xxxxx" } # 例) ヘッダーに"Bearer xxxxx"を付与
    query = { page: 1, per_page: 20 }          # 例) 1ページ目、1ページごとのデータ取得数を20件にするquery       
    client = HTTPClient.new
    response = client.get(url, header: header, query: query) #headerとqueryを指定
    render json: JSON.parse(response.body)
  end
end

끝에



이번에는 get 리퀘스트만을 설명했지만, HTTPClient에서는 Post 등 다른 리퀘스트도 보낼 수 있으므로 조사해 보세요.

Qiita의 API에 대한 자세한 내용은 아래를 참조했습니다.
Qiita API v2 documentation - Qiita:Developer
Qiita API v2 개요(비공식)

좋은 웹페이지 즐겨찾기