ruby - 如何对从外部 API 调用 ruby​​ 返回的 404 运行 "if"语句

标签 ruby fullcontact

我正在测试 Fullcontact API 以检索有关特定人员的信息。如果我正在使用他们的 API 查找的人在他们的数据库中不存在,它将返回 404 Not found 错误。我试图通过检索其他用户名来解决这个问题,但它不起作用。这是代码:

  person = FullContact.person(email: 'wilson@wilsontest.com')
  if person.to_i > 400
        person = FullContact.person(email: 'wilsonp@gmail.com')
     else 
        person = FullContact.person(email: 'wilson@wilsontest.com')
     end
    p person

当找不到电子邮件时,这仍然显示 404 Not found。

最佳答案

如果您使用的是 fullcontact-api-ruby gem,则 FullContact.person 调用应该会引发一个 FullContact::NotFound 错误如果这个人不存在。您需要挽救该错误才能尝试其他操作:

def get_person

  emails ||= ['wilson@wilsontest.com', 'wilsonp@gmail.com']
  person = FullContact.person(email: emails.shift)

rescue FullContact::NotFound

  unless emails.empty?
    retry
  else
    # bottom line
  end

end

请注意,异常在 Ruby 中非常慢,而且您还会访问外部 API,因此请注意此处的响应时间。

关于ruby - 如何对从外部 API 调用 ruby​​ 返回的 404 运行 "if"语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32819808/

相关文章:

ruby - 使用 Redcarpet 转换 Jekyll 帖子

ruby - 与 ruby​​ 和 Nokogiri HTML 不兼容的编码

ruby-on-rails - 使用 define_method 动态定义 setter 方法?

ruby - 为什么单例类是它自己的一个实例?

ruby-on-rails - 如何告诉服务器EOF是否为ruby套接字

java - 由 : java. lang.NoSuchMethodError : com. squareup.okhttp.internal.Internal.getHttpUrlChecked 引起

ruby-on-rails - 对 API 调用进行排队以符合速率限制