Дикий Григорий

Full-stack веб-разработчик

API на Node.JS: Введение в Express. Часть 1

Доброго времени суток! Не так давно я решил окончательно вопрос с выбором стека технологий для работы и своих проектов:

  • Node.JS, Python(Django, Flask) для бэкенда
  • React для фротненда

Сегодня я начинаю цикл уроков по Node.JS где будет изучено построение API с использованием Node. Стоит отметить сразу, что знаниями JavaScript я особо не блещу, но все таки могу что-то полезное с его помощью написать. Мы будем следовать методологии REST при построении приложения. Это позволит в будущем создавать клиентов на React и React Native, чтобы создавать кросплатформенные приложения.

Создавать мы будем просто что-то наподобие todo-list, но включая возможность авторизации и управления своими заметками.

Введение в Express

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

Основные возможности Express:

  • Встроенный роутинг
  • Легко интегрируется со множеством шаблонизаторов
  • Минималистичный код
  • Есть возможность работать с middlewares

Инициализация

Построенное API будет позволять делать следующее:

  • Выдавать список заданий
  • Создавать, удалять и обновлять задачи
  • Создавать, удалять и обновлять пользователей
  • Аунтефикация
  • API документация

Первый делом создайте папку в которой будет хранится проект и откройте ее в терминале. Далее следует инициализировать package.json выполнив команду:

$ npm init

По итогу вы получите файл со следующим содержимым:

{
  "name": "task-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/dikiigr/nodejs-api.git"
  },
  "keywords": [
    "nodejs"
  ],
  "author": "Dikii Grigorii",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/dikiigr/nodejs-api/issues"
  },
  "homepage": "https://github.com/dikiigr/nodejs-api#readme"
}

На данном этапе nodejs не позволяет использовать все возможности ES6, поэтому для его поддержки нужно установить babel - js транслятор языка, которы занимается переводом ES6/ES7 в ES5. Установить babel можно выполнив команду:

npm install babel-cli@6.5.1 babel-preset-es2015@6.5.0 --save

Теперь для того, чтобы наш babel-preset использовался компилятором babel-cli используется файл .babelrc, который помещается в корень проекта со следующим содержимым:

{
  "presets": ["es2015"]
}

На данном этапе в файле package.json нужно изменить секцию script убрав оттуда команду для тестирования и добавив команду для запуска проекта, по итогу package.json будет выглядеть следующим образом:

{
  "name": "task-api",
  "version": "1.0.0",
  "description": "Task list API",
  "main": "index.js",
  "scripts": {
    "start": "babel-node index.js"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/dikiigr/nodejs-api.git"
  },
  "keywords": [
    "nodejs"
  ],
  "author": "Dikii Grigorii",
  "bugs": {
    "url": "https://github.com/dikiigr/nodejs-api/issues"
  },
  "homepage": "https://github.com/dikiigr/nodejs-api#readme",
  "dependencies": {
    "babel-cli": "^6.5.1",
    "babel-preset-es2015": "^6.5.0"
  }
}

Также нам необходимо установить сам express:

npm install express@4.13.4 --save

Теперь после установки express мы можем создать файл index.js который будет являться входной точкой приложения.

import express from "express";

const PORT = 3000;
const app = express();

app.get("/", (req, res) => res.json({status: "Task API"}));
app.listen(PORT, () => console.log(`Task API - Port ${PORT}`));

В данном примере мы создаем приложение app и запускаем сервер на порту 3000. Также здесь идет обработка GET / посредством функции app.get, которая принимает в качестве первого параметра путь, а вторым параметром функцию-обработчик. Запустим приложение и посмотрим на результат.

npm start

В итоге в консоле вы должны получить примерно следующее:

Введя в браузере следующий адрес localhost:3000 вы должный увидеть ответ сервера возвращаемый в виде json нотификации:

Для первого урока достаточно. В следующем уроке мы разберем как упростить роутинг и организовать код правильно.

Ссылка на репозиторий: https://github.com/dikiigr/nodejs-api