Написать API создания,изменения,получения,удаления для заказов
Данный проект написан на node.js, c приминением фреймворка express.js и sequelize.
Проект представляет из себя простой пример API для системы формирования заказов.
В корне проекта находиться фаил apk.js где подключаются моршруты и необходимые модули нашего приложения и необходимые модули. Так же здесь находится файл package.json где описываются зависимости нашего проекта.
В этой папке находиться файл www.js в котором прописаны параметры запуска нашего приложени и при помощи которого мы запускаем наше приложение
В этой папке находится файл config.json. В нем прописана конфигурация для приложения. В нашем случае прописаны параметры подключения к бд
В этой папке находятся файлы обрабатывающие данные прищедщие с запросом.
В этой папке находится файл в котром мы подключаемся к БД и в котором мы инициализируем модели
В этой папке находятся файлы миграции из которых создается структура БД
В этой папке находятся файлы с описанием моделей Sequelize
В этой папке находяться файлы описывающие маршрутизацию нашего приложения
В этой папке находятся файлы с данными для заполнения БД начальными записями
Модель пользователя
Описание полей
Название | Тип | Описание |
---|---|---|
id | integer | id пользователя |
login | string | Логин пользователя |
password | string | Пароль пользователя |
string | почтовый адрес пользователя | |
role_id | integer | id роли пользователя |
Модель роли пользователя
Описание полей
Название | Тип | Описание |
---|---|---|
id | integer | id роли |
name | string | Имя роли |
Модель поставщика
Описание полей
Название | Тип | Описание |
---|---|---|
id | integer | id поставщика |
name | string | Имя поставщика |
Модель товара
Описание полей
Название | Тип | Описание |
---|---|---|
id | integer | id товара |
name | string | Имя товара |
description | string | Описание товара |
price | integer | цена товара |
producer_id | integer | id поставщика товара |
Модель Заказа
Описание полей
Название | Тип | Описание |
---|---|---|
id | integer | id заказа |
number | string | Имя заказа |
order_date | date | дата заказа |
user_id | integer | id создателя заказа |
Модель позиции заказа
Описание полей
Название | Тип | Описание |
---|---|---|
id | integer | id заказа |
count | integer | количество |
order_id | integer | id заказа |
product_id | integer | id товара |
Перед началом работы нужно установить необходимые пакеты. Сделать это можно командой
npm install
выполнив ее в командной строке в корневой папке проекта.
После этого выполните следующую команду(так же в корневой папке проекта)
npx sequelize-cli db:migrate
После этого у васв корневом каталоге проекта должен появиться файл database.sqlite3 В котором находиться наша БД. Поскольку это SQLite то открывать ее соответсвующими пограммами
Далее вы выполняете команду: npx sequelize-cli db:seed:all После чего в нашем файле БД появятся записи.
Приложение запускается следующей командой
npm run start
После того как вы запустите приложение, то вы можете делать http запросы к нашему приложнию.
Запросы вы можете делать чрез любой удобный для вас способ. Например postman
Расмотрим на примере получения списка всех пользователей при помощи GET запроса к http://localhost:3000/users
Сама обработка запроса происходит в файле routes/users.js откуда вызывается метод create из файла controllers/userController.js. (для каждого запроса будет вызываться соответсвующий метод из соостветствующего контроллера). Сам файл routes/users.js подключается в файле app.js
Пример кода:
const usersRouter = require('./routes/users');
...
app.use('/users', usersRouter);
Выполнив этот GET запроса к http://localhost:3000/users в ответ мы получим
[
{
"id": 1,
"login": "test",
"password": "123",
"email": "test@test.ru",
"role_id": 1,
"createdAt": "2020-05-15T08:33:18.229Z",
"updatedAt": "2020-05-15T08:33:18.229Z",
"Role": {
"id": 1,
"name": "buyer",
"createdAt": "2020-05-15T08:33:18.013Z",
"updatedAt": "2020-05-15T08:33:18.013Z"
}
},
{
"id": 2,
"login": "admin",
"password": "123",
"email": "admin@test.ru",
"role_id": 2,
"createdAt": "2020-05-15T08:33:18.229Z",
"updatedAt": "2020-05-15T08:33:18.229Z",
"Role": {
"id": 2,
"name": "admin",
"createdAt": "2020-05-15T08:33:18.013Z",
"updatedAt": "2020-05-15T08:33:18.013Z"
}
}
]
Давайте теперь попробуем добавить нового пользователя. Для этого отправим Post запрос на адрес http://localhost:3000/users/ следующий json объект:
{
"login": "test4",
"email": "test4",
"password": "test4",
"role_id": "1"
}
в ответ к нам придет следующий объект:
{
"id": 6,
"login": "test4",
"email": "test4",
"password": "test4",
"role_id": "1",
"updatedAt": "2020-05-17T07:31:33.203Z",
"createdAt": "2020-05-17T07:31:33.203Z"
}
Так же созданого нами пользователя мы можем увидеть в объекте полученном при GET запросe к http://localhost:3000/users
Так же мы можем получить информацию об одном пользователе отправив GET запрос http://localhost:3000/users/3 (где 3 это ид объекта который мы хотим получить). В ответ мы получим следующий объект
{
"id": 3,
"login": "test4",
"password": "test4",
"email": "test4",
"role_id": 1,
"createdAt": "2020-05-17T07:26:27.590Z",
"updatedAt": "2020-05-17T09:59:21.587Z",
"Role": {
"id": 1,
"name": "buyer",
"createdAt": "2020-05-15T08:33:18.013Z",
"updatedAt": "2020-05-15T08:33:18.013Z"
}
}
Изменить созданный нами объект мы можем PUT запросом на адрес http://localhost:3000/users/3 (где 3 это ид объекта который мы хотим изменить) следующий запрос
{
"login": "test",
"email": "test",
"password": "test"
}
В ответ мы получим следующий объект
{
"id": 3,
"login": "test",
"password": "test",
"email": "test",
"role_id": 1,
"createdAt": "2020-05-17T07:26:27.590Z",
"updatedAt": "2020-05-17T09:59:21.587Z",
"Role": {
"id": 1,
"name": "buyer",
"createdAt": "2020-05-15T08:33:18.013Z",
"updatedAt": "2020-05-15T08:33:18.013Z"
}
}
Для того что бы удалить созданный нами объект Нужно отправить DELETE запрос на адрес http://localhost:3000/users/3 (где 3 это ид объекта который мы хотим удалить).
В ответ придет объект следующего вида
{
"status": "deleted"
}
Нужно написать апи для создания, получения, изменения, удаления заказа. Сделать это можно по анологии с примером описанным выше.
Объект который нужно отрправить для создания/изменения заказа должен выглядеть следующим образом
{
"number": "123-df",
"order_date": "2020-04-17",
"user_id": 1
}
Нужно сделать форк этого репозитория. Внести необходимые изменения, а после отправить ссылку на свой репозиторий на email geras.dimas@gmail.com