2017-01-19 9 views
0

Я новичок в Ruby on Rails framework. Я занимался практикой из учебника Ruby on Rails по coursera, для которого мне приходилось получать информацию о некоторых курсах из API Coursera с помощью HTTParty и отображать эту информацию на экране. Но, к сожалению, я застрял в проблеме.HTTParty 'get' возвращает nil: Ruby

Вот мой код, который получает информацию от Coursera API и возвращает его

class Coursera 
    include HTTParty 

    base_uri 'https://api.coursera.org/api/catalog.v1/courses' 
    default_params fields: "smallIcon,shortDescription", q: "search" 
    format :json 

    def self.for term 
     response=get("", query: { query: term})["elements"] 
     if(response==nil) 
      puts "Got Negative response!" 
     else 
      puts "Got Positive response!" 
      return response 
     end 
    end 
end 

Может кто-нибудь указать, почему «получить» возвращение ноль. Я уверен, что делаю какую-то ошибку, но кто-нибудь может это указать? Заранее спасибо

+1

Я бы сократите свой код основных 'HTTParty.get (...) [ 'элементов'] 'который работает, а затем двигается вперед, пока он не сломается снова. –

ответ

0

Странно. Похоже, что coursera не всегда возвращает тот же ответ.

require 'httparty' 

class Coursera 
    include HTTParty 

    base_uri 'https://api.coursera.org/api/catalog.v1/courses' 
    default_params fields: "smallIcon,shortDescription", q: "search" 
    format :json 

    def self.for term 
    response = get("", query: {query: term}) 
    puts response.request.last_uri.to_s 
    elements = response["elements"] 
    if elements 
     puts "Got Positive response!" 
     response 
    else 
     puts "Got Negative response!" 
    end 
    end 
end 

p Coursera.for 'python' 

Иногда возвращается:

https://api.coursera.org/api/catalog.v1/courses?fields=smallIcon%2CshortDescription&q=search&query=python 
Got Negative response! 
nil 

, а иногда:

https://api.coursera.org/api/catalog.v1/courses?fields=smallIcon%2CshortDescription&q=search&query=python 
Got Positive response! 
#<HTTParty::Response:0x2660970 parsed_response={"elements"=>[{"id"=>119, "shortName"=>"scicomp", "name"=>"High Performance Scientific Computing", "shortDescription"=>"Programming-oriented course on effectively using modern computers to solve scientific computing problems arising in the physical/engineering sciences and other fields. Provides an introduction to efficient serial and parallel computing using Fortran 90, OpenMP, MPI, and Python, and software development tools such as version control, Makefiles, and debugging.", "smallIcon"=>"https://d15cw65ipctsrr.cloudfront.net/00/621b9b2597807229ed0fa605f96cdc/HighPerformanceComputingIma.jpg", "links"=>{}}, {"id"=>87, "shortName"=>"compphoto", "name"=>"Computational Photography", "shortDescription"=>"In this course you will learn about the basics of 
.... 
+0

Я видел это на других сайтах. Моя догадка всегда заключалась в том, что они стоят за балансировщиком нагрузки и не обновляют все свои машины до той же версии. В основном у них есть несоответствия в их хозяевах. –

+0

Спасибо за ваш ответ Эрик. Я проверил ваш код, и он всегда дает «Got Positive response» в моей системе. Это хорошо, но проблема в том, что когда я вызываю этот код в моем приложении Rails, я всегда получаю «нуль», возвращенный функцией «получить». (Существует контроллер под названием coursera_controller, который вызывает функцию «для» в коде, который я написал выше, с некоторым параметром. Вид получает информацию от контроллера и представляет на экране). –