Эта статья об использовании премиальных данных 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

Пожалуйста, не стесняйтесь оставлять любые вопросы или отзывы ниже. Спасибо!