Как запустить оператор "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, так что не забывайте о времени отклика здесь.