Узнайте, как сделать вызов API и создать приложение для преобразования адреса из командной строки в географические координаты.
Введение
Добро пожаловать в это вводное руководство по вызовам Node.js и API!
В этом уроке я покажу вам, как сделать вызов Google Geocoding API и преобразовать ваш адрес в географические координаты. Для начала вот что вам понадобится:
- Компьютер. В этом руководстве я буду использовать macOS Mojave. Другие операционные системы должны работать нормально, просто обратите внимание, что при использовании терминала могут быть некоторые отличия.
- Node.js: перейдите на веб-сайт Node.js. Загрузите и установите Node, если он еще не установлен на вашем компьютере. Следуйте инструкциям, указанным на сайте для правильной установки.
- Учетная запись разработчика Google. Перейдите на сайт Google Developers и создайте учетную запись, если у вас ее еще нет.
Первый шаг: настройка Google API
Прежде чем мы перейдем к настройке Google API, я хочу пояснить, что такое API и для чего он нужен.
API — интерфейс прикладного программирования
Звучит много, но это всего лишь название чего-то, что на самом деле довольно просто. API-интерфейсы позволяют разработчику добавлять сервисы в свое приложение. Таким образом, API — это способ для разработчика общаться со сторонней организацией для получения информации или оказания услуги. В нашем случае мы будем использовать Google Geocoding API для преобразования адреса в географические координаты (широта/долгота). Теперь, когда у вас есть лучшее понимание, давайте погрузимся!
- Перейдите в Google Cloud Console.
- Вы должны увидеть всплывающее окно, содержащее 3 варианта: Карты, Маршруты и Места. Установите флажок «Места» и нажмите «Продолжить».

3. Нажмите + Создать новый проект и введите имя для вашего проекта. (приложение узла работает нормально)
4. Теперь вы должны быть в консоли Google Cloud Platform. Нажмите кнопку API в боковом меню.
5. В разделе «Включенные API» щелкните API геокодирования.
6. Оказавшись на странице Geocoding API, вы должны увидеть три вкладки под заголовком. Щелкните Учетные данные.
7. Теперь вы должны увидеть список ваших ключей API. Обратите внимание на Ключ.
Второй шаг: настройка проекта
Пришло время настроить проект!
Эти команды предназначены для Unix, если вы используете Windows, я бы посоветовал изучить несколько основных команд командной строки.
- Откройте свой терминал и создайте каталог с именем «node-project».
mkdir node-project
2. Перейдите внутрь каталога «cd node-project» и запустите
npm init
3. Назовите проект simple-node-project.
4. Для версии нажмите Enter
5. Описание не требуется, но вы можете добавить его, если хотите.
6. Для точки входа нажмите Enter
7. Для тестовой команды нажмите Enter
8. Для репозитория git — нажмите Enter
9. Для ключевых слов нажмите Enter
10. Для автора - введите свое имя
11. Для лицензии - нажмите Enter
12. Это нормально? (да) - нажмите Enter
13. Создайте файл с именем index.js. Вы можете использовать любой редактор, какой пожелаете. Для тех из вас, кто не знает, что такое Vim или Emacs, просто откройте каталог node-project и создайте новый файл. Вы можете отредактировать файл в любом текстовом редакторе. Убедитесь, что файл называется index.js.
Теперь ваш проект настроен, и вы почти готовы написать свою первую строку кода!
Выполнение вызова API
Чтобы сделать вызов API, мы будем использовать запрос модуля узла. Этот модуль узла значительно упрощает вызовы API. Чтобы установить модуль узла, выполните следующую команду:
npm install request –save
Этот модуль запроса довольно прост в использовании. Требуется только целевой URL-адрес, и запрос возвращает функцию обратного вызова. Для получения дополнительной документации посетите документацию по запросу в разделе Запрос NPM.
const request = require(‘request’); // Imports the module for use
// request call with parameters
request(targetUrl, function (err, response, body) {
console.log(‘error:’, error); // prints the error if one occurred
console.log(‘body:’, body);
});
Если есть ошибка с вызовом API, то ошибка будет отображаться с переменной ошибки. Если ошибок не было, то ответ от звонка будет сохранен в переменной body.
Теперь, когда мы создали и настроили запрос, давайте добавим несколько значений, чтобы сделать его пригодным для использования.
Надеюсь, вы где-то сохранили этот ключ Google API! Вот где мы будем использовать его. В приведенном ниже коде мы объявим и инициализируем необходимые переменные. Вам нужно будет вставить этот код перед вызовом запроса, чтобы убедиться, что все переменные объявлены и инициализированы перед их использованием.
let apiKey = ‘****************************’;
let address = ‘1301 S University Parks Dr, Waco, TX’;
let targetUrl = `https://maps.googleapis.com/maps/api/geocode/json?address=${address}&key=${apiKey}`
Что происходит выше?
- Мы создали и инициализировали переменную с именем apiKey, в которой будет храниться ключ Google API, о котором вы упоминали ранее. Ваш ключ не будет звездочками.
- Мы создали и инициализировали переменную с именем address, которая содержит адрес места, которое вы хотите найти. Вы можете изменить значение адреса на любой адрес, который вы хотите преобразовать.
- Последняя переменная — это целевой URL-адрес, который является URL-адресом API, который вы будете вызывать. URL-адрес — это адрес API, а элементы или параметры запроса после вопросительного знака (?) — все значения, отправляемые в API. Каждый параметр запроса отделяется амперсандом (&).
Теперь ваш код должен быть готов к вызову и получению ответа. Теперь он должен выглядеть следующим образом:
const request = require(‘request’); // Imports the module for use
let apiKey = ‘****************************’;
let address = ‘1301 S University Parks Dr, Waco, TX’;
let targetUrl = `https://maps.googleapis.com/maps/api/geocode/json?address=${address}&key=${apiKey}`
// request call with parameters
request(targetUrl, function (err, response, body) {
console.log(‘error:’, error); // prints the error if one occurred
console.log(‘body:’, body);
});
Теперь ваш код можно запустить в терминале, выполнив следующую команду:
node index.js
Поздравляю! Вы только что запустили свое первое приложение командной строки Node.js, которое вызывает API геокодирования Google. Теперь вам может быть интересно, что такое фанковый вывод. Ответ от API Google возвращается в формате JSON, поэтому вывод, который вы видите, отображается в формате JSON.
Третий шаг: настройка вывода
Как видите, вывод вашей программы немного сложно читать. Это потому, что он распечатывается в формате JSON, который, по сути, является просто аббревиатурой для нотации объектов JavaScript, что означает, что он форматирует объект JavaScript во что-то, что можно прочитать.
Теперь давайте исправим ответ, чтобы отображались только широта и долгота. Вам понадобится следующий код:
let geoLocation = JSON.parse(body);
let mssg = `lat: ${geoLocation.results[0].geometry.location.lat} long: ${geoLocation.results[0].geometry.location.lng}`;
console.log(mssg);
Первое, что нам нужно было сделать, это преобразовать возвращаемый сумасшедший текст в объект JavaScript, который мы можем использовать. Итак, мы создаем переменную геолокации и инициализируем ее с помощью объекта JavaScript возвращаемого текста, используя:
JSON.parse()
Затем мы создаем сообщение, которое будет возвращено. Мы используем обратные галочки, так как мы хотим добавить наши значения широты и долготы. Вы можете использовать точечную нотацию для получения значений широты и долготы из объекта JavaScript, который мы сохранили в переменной geoLocation. Точечная нотация — это просто путь к нужному значению внутри объекта.
И последнее, но не менее важное: мы отображаем сообщение, используя:
console.log().
Теперь ваш код должен выглядеть следующим образом:
const request = require(‘request’); // Imports the module for use
let apiKey = ‘****************************’;
let address = ‘1301 S University Parks Dr, Waco, TX’;
let targetUrl = `https://maps.googleapis.com/maps/api/geocode/json?address=${address}&key=${apiKey}`
// request call with parameters
request(targetUrl, function (err, response, body) {
console.log(‘error:’, error); // prints the error if one occurred
let geoLocation = JSON.parse(body);
let mssg = `lat: ${geoLocation.results[0].geometry.location.lat} long: ${geoLocation.results[0].geometry.location.lng}`;
console.log(mssg);
});
Отказ от ответственности: это не обязательно хорошая практика кодирования. Он предназначен для введения в простой вызов API. Как правило, нехорошо раскрывать ключ API в файле index.js, но ради экономии времени и простоты я оставил его.
Вывод
Поздравляем с завершением этого простого проекта Node.js с вызовом Google API! Надеюсь, вы смогли получить ценные вводные знания по элементам, рассмотренным в этом руководстве. Это не должно быть концом, вы можете расширить этот проект, добавив интерактивность в консоль, позволяющую пользователю вводить адрес из самой консоли. Вы также можете изучить поиск обратного геокодирования, чтобы вы могли ввести широту / долготу, чтобы получить адрес.
Спасибо Брэндону Морелли за вдохновение для написания этой статьи. У него потрясающие уроки и статьи, так что загляните к нему!