Как запустить оператор "if" на возвращенных 404-х из внешнего ruby-вызова API

Я тестирую API Fullcontact для получения информации о конкретных людях. Если человек, которого я ищу с помощью его 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 Не найдено, когда электронная почта не найдена.

1 ответ

Решение

Если вы используете fullcontact-api-ruby драгоценный камень, 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, так что не забывайте о времени отклика здесь.

Другие вопросы по тегам