我正在尋找一種方法來檢查使用HTTParty請求之前,API URL是否存在。目前,如果該URL不存在,則HTTParty請求錯誤。Rails如何檢查API請求URL之前拉
我試過下面這Check if URL exists in Ruby:
api_url = "http://api.meetup.com/LA-Computer-Science-Reading-Group/events?photo-host=public&page=20&sig_id=215634693&sig=0be729af948c1a17ce5f35faa9fcedd5ae22de56"
require "net/http"
url_request = URI.parse(api_url)
req = Net::HTTP.new(url_request.host, url_request.port)
res = req.request_head(url_request.path)
@check = res
response = HTTParty.get(api_url)
觀點:
<%= @check.inspect %>
#<Net::HTTPOK 200 OK readbody=true>
但是,如果我改變URL的東西不存在,如:
http://api.meeeeeetup.com/LA-Computer-Science-Reading-Group/events?photo-host=public&page=20&sig_id=215634693&sig=0be729af948c1a17ce5f35faa9fcedd5ae22de56`
的頁面仍然有錯誤getaddrinfo: nodename nor servname provided, or not known
此外,URL請求我想檢查是一個XML請求:
http://api.indeed.com/ads/apisearch?publisher=#{publisher_key}&q=java&l=austin%2C+tx&sort=&radius=&st=&jt=&start=&limit=&fromage=&filter=&latlong=1&co=us&chnl=&userip=&useragent=&v=2
和使用上面的想法,這個API URL不返回成功調用。相反,它返回一個#<Net::HTTPMethodNotAllowed 405 Method Not Allowed readbody=true>
。
我不確定模擬瀏覽器檢查結果的方式,或者有更簡單的方法來檢查HTTP URL請求之前的API URL請求的有效性。
爲什麼不能簡單地做出請求,並失敗,如果無效的網址? –
@Joel_Blum我發現如果我將無效的URL傳遞給HTTParty,它只會出現'getaddrinfo:nodename或服務名提供或未知的錯誤'並且會中斷應用程序。我不確定如何捕獲該錯誤,或者HTTParty是否有辦法在失敗前檢查URL響應。 – teresa
您可以檢查URL的有效性;這與確保端點*存在*不同。但是,您的「無效」網址示例不是無效的網址,它只是不存在。 http://stackoverflow.com/a/26768085/438992 –