Правильно использовать API с HTTParty с нестандартным путем ввода - PullRequest
0 голосов
/ 14 января 2019

У меня есть упражнения, где я должен использовать API, используя HTTParty, чтобы показать больше информации о фильмах. Когда в заглавном фильме есть два или более слов, происходит сбой, поскольку между каждым словом добавляется «% 20».

Является ли лучший способ использовать API ниже, чем я? Я думаю, что мое решение не совсем сложное. Мое решение основано на одном из эпизодов GoRails.

Информация должна поступать из API, и я не могу сохранить эти данные в базе данных. Вывод API выглядит следующим образом:

{"data":{"id":"5","type":"movie","attributes":{"title":"Inglourious 
Basterds","description":"In Nazi-occupied France during World War II, a 
plan to assassinate Nazi leaders by a group of Jewish U.S. soldiers 
coincides with a theatre owner's vengeful plans for the 
same.","rank":8.3,"poster":"/inglourious_basterds.jpg"}}}

movie_details.rb

class MovieDetails
 include HTTParty
 base_uri "https://fakeaddress-api.com/api/v1/movies"

 def self.title(title)
   get("/#{title}.json").parsed_response["data"]["attributes"]["title"]
 end

 def self.description(title)
   get("/#{title}.json").parsed_response["data"]["attributes"]["description"]
 end

 def self.poster(title)
   get("/#{title}.json").parsed_response["data"]["attributes"]["poster"]
 end

 def self.rank(title)
   get("/#{title}.json").parsed_response["data"]["attributes"]["rank"]
 end
end

movies_controller.rb

def show
  @movie = Movie.find(params[:id])
  @description = MovieDetails.description(@movie.title.split.join(""))
  @rank = MovieDetails.rank(@movie.title.split.join(""))
  @poster = MovieDetails.poster(@movie.title.split.join(""))
end

Когда в заголовке есть два слова, ссылка: https://fakeaddress -api.com / api / v1 / movies / Inglourious% 20Basterds - для фильма «Бесславные ублюдки».

...