Руководство для начинающих по созданию API с помощью Node.js и Express.

Введение

Это простой, удобный для начинающих учебник. Мы не будем подробно обсуждать какие-либо сложные концепции, такие как блокирующие и неблокирующие вызовы в Node.js/асинхронные выполнения, совместное использование ресурсов между источниками и т. д. Так что, если у вас нет опыта работы с Node.js и вы просто хотите попробовать из него, продолжайте читать.

Что такое Node.js простыми словами

Это просто среда выполнения, которая помогает вам запускать JavaScript на сервере. Это просто дает вам «возможность» запускать код JavaScript на серверной части. Еще в 1990-х годах JavaScript был только языком сценариев, и вы не могли запускать его на сервере до 2009 года, когда впервые появился Node.js, позволивший использовать полный стек JavaScript (тактика, которая имеет как преимущества, так и недостатки).

Давайте создадим самый простой API

Давайте создадим простое приложение для проката книг, в котором пользователь по имени Майк сможет видеть книги, которые он взял напрокат, в виде скучного простого текста. Майк посещает определенный URL-адрес в Интернете, который указывает на ваш сервер. Допустим, это: http://worlds-best-library.com. Вы также внедрили окончательный метод аутентификации 😊, поскольку вы дали Майку код и объяснили ему, что если он введет этот код, он увидит книги, которые взял напрокат. Итак, Майк с радостью отправляет запрос на просмотр книг, которые он взял напрокат, и ждет, чтобы получить информацию об этих книгах. Ваш сервер Node.js получает этот запрос и действует в соответствии с ним. Это дает ему ответ с некоторым HTML, который содержит всю информацию, которую он хочет. Это, конечно, слишком упрощенное объяснение, но оно дает вам представление о том, как работает базовый API. Как правило, помните этот процесс запроса и ответа. Это происходит постоянно, особенно в RESTful API. Вы можете думать об этом как об игре в пинг-понг. Каждый раз, когда клиент что-то запрашивает, сервер отвечает…

Установите Node.js и запустите его в Windows

Скачайте Node.js с официального сайта и установите его на свой ПК. Он также устанавливает npm (диспетчер пакетов Node). npm просто помогает вам получить доступ к чужому коду. Это крупнейший в мире реестр программного обеспечения, и разработчики используют его для совместного использования программного обеспечения. Пряжа – еще одна популярная альтернатива. Вы можете скачать Node по ссылке ниже:

https://nodejs.org/ -› скачать и установить последнюю версию LTS (например, 16.17.1)

Откройте терминал и выполните следующие команды, чтобы проверить, прошла ли установка успешно:

  1. Получить версию узла:
node -v

2. Получите версию npm:

npm -v

Если npm не был установлен, также запустите:

npm install -g npm

Теперь вам нужна IDE или редактор кода для написания кода. Если у вас его еще нет, вы можете установить VSCode. VSCode — это легкий и простой в использовании редактор кода, которым пользуются тысячи разработчиков. После загрузки введите код в своем терминале, чтобы открыть его.

Настройка проекта

Шаг 1. Для начала создайте папку, в которой будут находиться файлы проекта. Я назвал эту папку как demo_api. Затем вам нужно открыть новый терминал (внутри VSCode).

Вы можете найти Терминал в строке меню вверху.
1. Нажмите «Терминал»
2. Выберите «Новый терминал» в раскрывающемся меню:

Шаг 2. Создайте минимальный файл package.json, введя:

npm init -y

Шаг 3. Создайте файл, например index.js.

Шаг 4. Установите Express

npm i express

Express.js — это минимальная внутренняя структура веб-приложений для NodeJS, которая предоставляет множество функций, в основном для веб-приложений, но также и для мобильных приложений. Это облегчает нашу жизнь, когда мы разрабатываем веб-приложения и API.

Разработка

Теперь давайте обсудим, что должно делать ваше приложение, на более высоком уровне.

  • Вам нужно, чтобы ваше приложение работало на каком-то хосте с портом: это очень важно, чтобы пользователь, например. Майк может увидеть ваш сайт и сделать запрос. Для простоты предположим, что Майк использует ваш компьютер и может отправлять запросы в ваше приложение, которое будет работать на localhost.
  • Вам нужна некоторая логика, которая будет выполняться, если Майк сделает запрос к конечной точке. После того, как эта логика будет выполнена, Майк должен получить ответ и быть уведомленным о том, что произошло.
  • Наконец, вы можете использовать некоторые библиотеки, такие как Express.js, для реализации вышеуказанных функций, чтобы облегчить себе жизнь.

Давайте добавим код в index.js:

Библиотеки

Включить библиотеки вверху:

const express = require('express');
const app = express();
  • В частности, первая строка используется для импорта экспресс-модуля путем ссылки на него в переменной с именем express. Таким образом, мы можем получить доступ ко всем методам, экспортированным из «express».
  • Во второй строке представлена ​​переменная с именем app. Это используется для инициализации экземпляра экспресс-модуля, который мы будем использовать позже.

Имя хоста и порт

Давайте просто добавим имя хоста и порт в переменную и присвоим им некоторые значения. Вы также можете использовать для этого переменные среды, если вам нужно, чтобы ваши переменные можно было использовать повторно, они были отделены от логики приложения и могли быть доступны из любого места. Есть библиотека dotenv, которая помогает управлять переменными окружения и загружать их, но это тема для другой истории 🙄.

const hostname = '127.0.0.1';
const port = 3000;

Помните, что наш сервер должен отвечать на запросы клиентов. Итак, давайте обработаем пользовательские запросы на корневой URL-адрес (/). Вы также можете назвать это маршрутом. Это самый простой маршрут вашего приложения, и вы можете получить к нему доступ, набрав http://URL. например http://локальный:3000/

app.get('/', (request, response) => {
    response.send('Our app says hi 📖')
})

Приложение отвечает «Наше приложение передает привет 📖» на запросы к этому маршруту (/). Для любого другого пути в настоящее время он будет отвечать 404 Not Found.

Наконец, нам нужно заставить наш сервер прослушивать соединения на локальном хосте, порт 3000. Вы можете выбрать любой порт, который вам нравится, но 3000 является обычным для приложений Node.js.

const express = require('express');
const app = express();

const hostname = '127.0.0.1';
const port = 3000;

app.get('/', (request, response) => {
    response.send('Our app says hi 📖')
})

app.listen(port, hostname, () => {
    console.log(`Server is running at http://${hostname}:${port}/`);
});

Добавьте немного простой логики

Поэтому, когда пользователь вводит /api/books или какой-либо интерфейсный код делает то же самое, ваш сервер должен проверить параметры, указанные пользователем. Если пользователем является Майк и он делает запрос, используя правильный код, который в данном случае: EDbSTTJ, он получит взятые напрокат книги. Итак, если Майк наберет: http://localhost:3000/api/books?code=EDbSTTJ, он увидит запрошенную книгу.

const express = require('express');
const app = express();

const hostname = '127.0.0.1';
const port = 3000;

app.get('/', (request, response) => {
    response.send('Our app says hi 📖')
})

app.get('/api/books', (request, response) => {
    let userCode = request.query.code;
    if ('EDbSTTJ' == userCode) {
        response.status(200).send('Your book:<br>1984 | G.Orwell');
    } else {
        response.status(400).send('Sorry no books for you');
    }
});

app.listen(port, hostname, () => {
    console.log(`Server is running at http://${hostname}:${port}/`);
});

Примечание. Коды состояния ответа HTTP показывают, был ли успешно выполнен конкретный HTTP-запрос. Ответы сгруппированы в пять классов:

  • 100:информационные ответы.
  • 200:Ответы, указывающие на успех
  • 300:сообщения о перенаправлении
  • 400:Ответы клиентов об ошибках и ошибки клиентов
  • 500:Ответы об ошибках сервера. В этом случае код на вашем сервере неисправен.

status(200) в приведенном выше коде или 200 OK означает, что запрос выполнен успешно. статус(400) или 400 Bad Request означает, что сервер не может или не будет обрабатывать запрос из-за чего-то, что воспринимается как ошибка клиента (например, неверный синтаксис запроса , неверное формирование сообщения запроса или ложная маршрутизация запроса). Следует также отметить, что в этой ситуации может быть указан более конкретный код статуса 4xx . Но еще раз для простоты не будем усложнять пример.

Как запустить приложение и увидеть результаты?

Теперь запустите свой веб-сервер, используя node index.js. Ваше приложение работает на локальном хосте, порт 3000, по протоколу http. Мы также должны предоставить код для Майка. Итак, зайдя в браузере на http://localhost:3000/api/books?code=EDbSTTJ, Майк видит книгу, которую взял напрокат. Если код неверный, Майк получает сообщение Извините, для вас нет книг.

Поздравляем!

Вы сделали это так далеко! Поздравляем с успешной сборкой приложения Node.js + Express. Конечно, это только начало. В реальном приложении вам нужно будет добавить больше зависимостей, подумать о защите ваших конечных точек и реализации полной (возможно, на основе токенов) аутентификации, подумать о хорошей структуре проекта (например, с маршрутами, контроллерами, службами, моделями, промежуточным ПО). и т. д). Вы также можете подключиться к базе данных для извлечения, вставки, удаления или обновления данных. Возможности безграничны.

Что дальше? Следуйте за мной на Medium, чтобы первыми читать мои истории.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord . Заинтересованы в хакинге роста? Ознакомьтесь с разделом Схема.