我在lib方法中有以下if else语句:
begin
url = URI.parse("url"+ product )
@response = JSON.parse(Net::HTTP.get_response(url).body)
url2 = URI.parse("url" + product)
@response1 = JSON.parse(Net::HTTP.get_response(url2).body)
if @response != nil
@url = @response["product"]["url"]
image_url1 = @response["product"]["image_url"]
@title = @response["product"]["title"]
else
@url = @response1["ProductUrl"]
@image_url = @response1["ImagePath"]
@title = @response1["ProductName"]
end
rescue
next
end
目前此方法仅检查url和@response,并且只是在@response = nil时跳过。如何检查@response是否为nil,如果是,则使用url2和@ response1并保存从该响应返回的变量。如果@response不是nil,则保存从@respoonse返回的变量。
@response和@ response1是不同的API
答案 0 :(得分:2)
我认为这就是你想要的。关键是检查nil,使用@ response.nil?另一个问题是,如果第一次失败,你会得到相同的网址 - 不知道为什么你会再次要求相同的网址,如果它第一次失败就会以不同的方式对待它。
begin
url = URI.parse("url+ product )
@response = JSON.parse(Net::HTTP.get_response(url).body)
if !@response.nil?
@url = @response["product"]["walmart_canonical_url"]
@image_url = @response["product"]["image_url"]
@title = @response["product"]["title"]
else
url = URI.parse("url" + product)
@response = JSON.parse(Net::HTTP.get_response(url2).body)
@url = @response["ProductUrl"]
@image_url = @response["ImagePath"]
@title = @response["ProductName"]
end
rescue
next
end