如何 运行 关于从外部 API 调用 ruby 返回的 404 的 "if" 语句

How to run a "if" statement on returned 404s from external API call ruby

我正在测试 Fullcontact API 以检索有关特定人员的信息。如果我用 API 查找的人在他们的数据库中不存在,则会 return 出现 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,因此请注意此处的响应时间。