В этом блоке лекций я пишу пример для предметной области "ресторан", но вы должны разрабатывать АПИ для своей предметной области, выбранной для курсового проекта.
Напишем полноценное АПИ для проекта "ресторан" используя express.js.
Содержание:
Для больших проектов лучше использовать генератор, но там много лишнего. Создадим простой проект:
Запустите команду 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)
Добавьте в зависимости проекта пакет express.js командой npm install express
Создайте файл .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"
}
Создайте файл 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') - импортируем модуль expressconst 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!
GET /