[Rails] HTTParty gem으로 API를 쉽게 사용할 수 있는 방법
API는 내가 최근에 사용한 영화의 데이터베이스를 예로 든다.
htps //w w. 그래도 ぃぃえ db. 오 rg / Dokumen ON / API
HTTParty란?
API 데이터 샘플 분석(필요한 정보)
우선, 보기 쉽게 하기 위해, Chrome나 Firefox로 JSONView라는 확장을 인스톨 한다.
예를 들어 특정 영화 데이터:
base uri : htps : // 아피. 그래도 ぃぃえ db. 오 rg / 3 / 모즈 /
parameters("?"뒤 부분): api_key=1234abcd&language=ko-KR
요청의 매개 변수에 따라 데이터가 JSON으로 반환됩니다. URL에서는 매개 변수별로 "&"로 연결됩니다.
구현 순서(예: 검색+영화 상세)
준비
Gemfilegem 'httparty', '0.13.5' #インストールの後サーバ再起動
$ rails g controller movies search show
모델
app/models/movie.rbclass Movie
include HTTParty
# default_options.update(verify: false) # disable SSL verification(必要に応じて)
default_params api_key: '1234abcd', language: 'ja-JP' #共通パラメタ
format :json
# キーワードによる検索機能
# https://developers.themoviedb.org/3/search/search-keywordsに参照
def self.search term
base_uri 'https://api.themoviedb.org/3/search/movie'
get("", query: { query: term }) # {}の中身はパラメタ
end
# 指定の映画の詳細情報を取得
# https://developers.themoviedb.org/3/movies/get-movie-detailsに参照
def self.details id
base_uri "https://api.themoviedb.org/3/movie/#{id}"
get("", query: { } ) #パラメタなし
end
end
컨트롤러
movies_controller.rbdef search
@search_term = params[:looking_for]
@movie_results = Movie.search(@search_term)
end
def show
@movie_info = Movie.details(params[:id])
end
보기
search.html.erb<h1>映画検索</h1>
<div>
<%= form_tag(movies_search_path, method: :get) do %>
<%= search_field_tag :looking_for, nil, placeholder: 'Movie Title...' %>
<%= submit_tag '検索' %>
<% end %>
</div>
<div>
<% if @movie_results.blank? %>
<p>[<%= @search_term %>]と一致する情報が見つかりませんでした</p>
<% else %>
<p>[<%= @search_term %>]の検索結果</p>
<table border="1">
<tr>
<th>ポスター</th>
<th>タイトル</th>
<th>上映日</th>
<th>あらすじ</th>
</tr>
<% @movie_results.each do |movie| %>
<tr>
<td><%= image_tag("https://image.tmdb.org/t/p/w200#{movie["poster_path"]}", :alt => 'poster') %></td>
<td><%= link_to movie['title'], action: 'show', id: "#{movie["id"]}" %></td>
<td><%= movie['release_date'] %></td>
<td><%= movie['overview'] %></td>
</tr>
<% end %>
</table>
<% end %>
</div>
show.html.erb<h1><%= @movie_info['title'] %></h1>
<p><strong>上映日:</strong><%= @movie_info['release_date'] %></p>
<p><strong>上映時間:</strong><%= @movie_info['runtime'] %>分</p>
<p>
<strong>ジャンル:</strong>
<% @movie_info['genres'].each do |genre| %>
<% if genre == @movie_info['genres'].last %>
<span><%= genre['name'] %></span>
<% else %>
<span><%= genre['name'] %>、</span>
<% end %>
<% end %>
</p>
<p><strong>ストーリ:</strong><%= @movie_info['overview'] %></p>
<%= image_tag("https://image.tmdb.org/t/p/original#{@movie_info['poster_path']}", :alt => 'poster') %>
결과 화면
Reference
이 문제에 관하여([Rails] HTTParty gem으로 API를 쉽게 사용할 수 있는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/julia817/items/522da21edee1bf69994b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
준비
Gemfile
gem 'httparty', '0.13.5' #インストールの後サーバ再起動
$ rails g controller movies search show
모델
app/models/movie.rb
class Movie
include HTTParty
# default_options.update(verify: false) # disable SSL verification(必要に応じて)
default_params api_key: '1234abcd', language: 'ja-JP' #共通パラメタ
format :json
# キーワードによる検索機能
# https://developers.themoviedb.org/3/search/search-keywordsに参照
def self.search term
base_uri 'https://api.themoviedb.org/3/search/movie'
get("", query: { query: term }) # {}の中身はパラメタ
end
# 指定の映画の詳細情報を取得
# https://developers.themoviedb.org/3/movies/get-movie-detailsに参照
def self.details id
base_uri "https://api.themoviedb.org/3/movie/#{id}"
get("", query: { } ) #パラメタなし
end
end
컨트롤러
movies_controller.rb
def search
@search_term = params[:looking_for]
@movie_results = Movie.search(@search_term)
end
def show
@movie_info = Movie.details(params[:id])
end
보기
search.html.erb
<h1>映画検索</h1>
<div>
<%= form_tag(movies_search_path, method: :get) do %>
<%= search_field_tag :looking_for, nil, placeholder: 'Movie Title...' %>
<%= submit_tag '検索' %>
<% end %>
</div>
<div>
<% if @movie_results.blank? %>
<p>[<%= @search_term %>]と一致する情報が見つかりませんでした</p>
<% else %>
<p>[<%= @search_term %>]の検索結果</p>
<table border="1">
<tr>
<th>ポスター</th>
<th>タイトル</th>
<th>上映日</th>
<th>あらすじ</th>
</tr>
<% @movie_results.each do |movie| %>
<tr>
<td><%= image_tag("https://image.tmdb.org/t/p/w200#{movie["poster_path"]}", :alt => 'poster') %></td>
<td><%= link_to movie['title'], action: 'show', id: "#{movie["id"]}" %></td>
<td><%= movie['release_date'] %></td>
<td><%= movie['overview'] %></td>
</tr>
<% end %>
</table>
<% end %>
</div>
show.html.erb
<h1><%= @movie_info['title'] %></h1>
<p><strong>上映日:</strong><%= @movie_info['release_date'] %></p>
<p><strong>上映時間:</strong><%= @movie_info['runtime'] %>分</p>
<p>
<strong>ジャンル:</strong>
<% @movie_info['genres'].each do |genre| %>
<% if genre == @movie_info['genres'].last %>
<span><%= genre['name'] %></span>
<% else %>
<span><%= genre['name'] %>、</span>
<% end %>
<% end %>
</p>
<p><strong>ストーリ:</strong><%= @movie_info['overview'] %></p>
<%= image_tag("https://image.tmdb.org/t/p/original#{@movie_info['poster_path']}", :alt => 'poster') %>
결과 화면
Reference
이 문제에 관하여([Rails] HTTParty gem으로 API를 쉽게 사용할 수 있는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/julia817/items/522da21edee1bf69994b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여([Rails] HTTParty gem으로 API를 쉽게 사용할 수 있는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/julia817/items/522da21edee1bf69994b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)