Эта статья об использовании премиальных данных API в программе Udacity's FEND (Front-End Nanodegree), которую я недавно завершил (это было тогда, когда она все еще включала материал React, который, как я слышал, был перемещен в отдельную программу »).
В последнем проекте этой программы вы создали сайт с помощью React и включили API Карт Google. Одно из требований для этого - использовать данные из стороннего API на карте. Один из популярных вариантов среди студентов заключался в том, чтобы получить данные о фотографиях с помощью Foursquare API и использовать их в информационных окнах карты при выборе места проведения. У Foursquare есть отличные документы и примеры, которым вы можете следовать, используя их API, и это действительно один из наименее болезненных из тех, что я когда-либо видел.
Проблема
Основная проблема здесь в том, что Foursquare рассматривает использование photos
конечной точки для площадок как вызов API уровня премиум. В аккаунтах разработчиков Sandbox (то есть бесплатных) можно получать только 50 премиальных звонков в день. Превышение этого лимита приведет к появлению в консоли ошибки 429.
Не знаю, как вы, но когда я тестирую вызовы API, я довольно быстро выполняю 50 вызовов. И я просто запрашивал данные о фотографиях по одному. Некоторые студенты называют фото-данные сразу для всех своих заведений. После того, как эти 50 вызовов израсходованы, вам придется подождать до следующего дня, чтобы продолжить тестирование. Когда вы находитесь в зоне действия или приближаетесь к крайнему сроку, последнее, что вам нужно сделать, - это дождаться вашего ежедневного выделения API.
Решение
Итак, я нашел решение *. Он включал использование Postman для выполнения всего одного вызова конечной точки photos
API премиум-класса, чтобы получить законный ответ JSON от Foursquare. Затем я скопировал этот JSON на myjson.com, который затем дал мне URL-адрес для тестирования.
Я мог бы использовать этот URL для тестирования, сколько хотел. Я знал, что JSON отформатирован так же, как данные Foursquare, и будет содержать те же данные, что и реальный объект, и я не буду использовать свою квоту Foursquare. Я мог бы написать против этого Javascript, убедиться, что он работает, а затем просто вернуть конечную точку, когда тестирование будет завершено.
* Я уверен, что есть и другие решения, но это казалось простым в реализации и не занимало много времени.
Почтальон
Люблю пользоваться Почтальоном. Это упрощает вызов API-интерфейсов, и вы можете сохранить свою работу для использования позже. Это просто здорово. Если вы никогда не использовали его раньше, я предлагаю вам попробовать. Я тоже писал об этом раньше.
После установки Postman вам понадобится несколько вещей, чтобы позвонить на конечную точку Foursquare photos
.
- Идентификатор места проведения
- A
client_id
- A
client_secret
- Номер версии (обозначается как
v
)
Я получил свои места проведения, позвонив на конечную точку explore
. Конечная точка photos
может одновременно принимать только один идентификатор места проведения. Я включил один в этот пример, чтобы упростить задачу.
client_id
и client_secret
будут предоставлены вам, когда вы откроете учетную запись разработчика в Foursquare.
Параметр v
можно найти в документации Foursquare. Они время от времени меняются, поэтому в том, что я использую здесь, могут отсутствовать данные. При необходимости измените
В Postman создайте новый запрос GET и добавьте конечную точку photos
, включая идентификатор места (я использую идентификатор 42daf100f964a52035261fe3, но вы сможете использовать любой действительный идентификатор места, полученный от Foursquare)
https://api.foursquare.com/v2/venues/42daf100f964a52035261fe3/photos?
Затем вам нужно добавить в Params
Как только вы добавите их, Postman добавит их в URL-адрес GET.
Затем нажмите «Отправить».
Если все настроено правильно, вы должны увидеть ответ в формате JSON в Postman, содержащий данные о фотографиях.
Хорошо, сложная часть окончена. Теперь выберите весь ответ JSON (щелкните внутри окна ответа и введите Cmd + A
на Mac) и скопируйте (Cmd + C
). Теперь полный ответ JSON должен быть в вашем буфере обмена.
myJSON.com
Теперь перейдите на myJSON.com, вставьте ответ JSON в предоставленное окно и нажмите Сохранить. В случае успеха вам должен быть предоставлен URL-адрес для прямого доступа к этому JSON.
Теперь вы можете использовать этот URL в своем тестировании и знать, что вы получите тот же ответ, что и от Foursquare, но вам не нужно беспокоиться о том, что какая-либо квота помешает вам пройти тестирование.
Не верите мне? Вернемся к нашему старому другу Почтальону. Используйте URL-адрес myJSON.com в запросе GET Postman и нажмите «Отправить». Вы должны увидеть тот же ответ JSON.
Единственное предостережение: если вы хотите протестировать, используйте несколько фотографий. Этот метод всегда будет возвращать одну и ту же фотографию снова и снова, поскольку это всегда одни и те же данные, но это действительно не было проблемой для меня и этого проекта. Я убедился, что синтаксис моего вызова API правильный, и что я строю допустимую строку URL-адреса фотографии из данных. Как только это было сделано, я просто переключил запрашиваемую конечную точку обратно на конечную точку Foursquare photos
, и все стало на свои места.
Если вас вообще интересует финальный проект или вы хотите подробнее узнать, как я это сделал, вы можете найти репо здесь: https://github.com/thejasonfile/udacity-fend-neighborhood-map
Пожалуйста, не стесняйтесь оставлять любые вопросы или отзывы ниже. Спасибо!