express01.md 6.9 KB

Постановка задачи. Создание сервера express.js. Подключение и настройка ORM Sequelize.

В этом блоке лекций я пишу пример для предметной области "ресторан", но вы должны разрабатывать АПИ для своей предметной области, выбранной для курсового проекта.

Напишем полноценное АПИ для проекта "ресторан" используя express.js.

  1. Создадим проект и разберёмся в его структуре.
  2. Подключение к БД (познакомимся с ORM Sequelize, научимся делать миграции)
  3. Разработаем конечные точки для получения меню и формирования корзины

Содержание:

Создание проекта

Для больших проектов лучше использовать генератор, но там много лишнего. Создадим простой проект:

  1. Создайте каталог для проекта и перейдите в него
  2. Запустите команду npm init для создания проекта (Node Packet Manager - менеджер пакетов Node входит в дистрибутив Node.js)

    На все вопросы отвечаем по-умолчанию, кроме entry point (точка входа), тут пишем app.js (можно оставить и по-умолчанию, это ни на что не влияет)

    package name: (api)
    version: (1.0.0)
    description:
    entry point: (index.js) app.js
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    test command:
    git repository:
    keywords:
    author:
    license: (ISC)
    type: (commonjs)
    
  3. Добавьте в зависимости проекта пакет express.js командой npm install express

  4. Создайте файл .gitignore

    node_modules
    

    В каталог node_modules устанавливаются зависимости проекта, их хранить в репозитории не нужно. Ссылки на зависимости записываются в фалй package.json и их можно восстановить командой npm install

    Внимание!!! За каталог node_modules в репозитории ставлю 2 - сервер не резиновый

    Ниже пример списка зависимостей проекта:

    "dependencies": {
      "express": "^5.1.0",
      "jsonwebtoken": "^9.0.2",
      "md5": "^2.3.0",
      "mysql2": "^3.14.1",
      "sequelize": "^6.37.7",
      "sequelize-cli": "^6.6.3"
    }
    
  5. Создайте файл app.js (или index.js, если оставили настройки по-умолчанию)

    Ниже пример "hello world" проекта с официального сайта express.js

    const express = require('express')
    const app = express()
    const port = 3000
    
    app.get('/', (req, res) => {
      // в ответ на запрос возвращаем просто текст
      res.send('Hello World!')
    })
    
    app.listen(port, () => {
        console.log(`Example app listening on port ${port}`)
    })
    

    Что здесь происходит?

    • const express = require('express') - импортируем модуль express
    • const app = express() - создаём экземпляр приложения
    • const port = 3000 - определяем порт, на котором приложение будет слушать запросы.

      Прибивать гвоздями не совсем хорошо, но в перспективе мы завернём апи в контейнер. Сейчас главное чтобы порт никем не использовался.

    • app.get('/', (req, res) => {...}) - endpoint (конечная точка), которая будет обрабатывать входящий запрос. В данном случае метод GET по пути /.

      В параметрах лямбда функции объекты req (request - запрос, из этого объекта мы можем извлечь параметры и тело запроса) и res (response - ответ, сюда мы должны вернуть результат запроса)

    • app.listen(port, () => {...}) - запуск сервера, ждущего входящих запросов на указанном порту

      Можно было не заводить переменную port, а прямо сюда вписать 3000, но обычно такие параметры задаются переменными окружения, с которыми мы познакомимся чуть позже.

Запустить проект можно командой node app.js, либо настройть запуск в VSCode.

В браузере должна открываться страница localhost:3000, возвращающая Hello World!

Задание

  • Создать АПИ сервер на express.js с конечной точкой GET /
  • Подготовить ER-диаграмму для своей предметной области (базу данных пока делать не нужно, я сначала проверю "правильность" диаграммы)