Разворачивание проекта
Для того чтобы развернуть проект после клонирование репозитория, нужно в корневой директории проекта нужно запустить следующую команду npm install && npm run deploy
. Данная команда установит все зависимости в проекте, как сервера так и клиентской части, сделает сборку клентской части, а так же добавить файл данных Nedb для демонстрации функциональности проекта.
Для запуска проекта запускаем в корневой директории проекта npm run start
. Команда запустить два сервера, один сервер API, который слушает 3000 порт и второй статистический сервер который слушает 5000 порт, он и раздаёт файлы приложения.
Описание API
Сущности
Имеется всего одна сущность заявки requisition
, имеющая слудующую схему:
{
"_id": 1,
"clientName": "",
"carrier": {
"firstName": "",
"patronymic": "",
"lastName": "",
"phone": "",
"ati": 1
},
"comments": "",
"createdAt": ""
}
_id
– номер заявки, тип положительное целое число, автоматически создаётся на сервере автоинкрементомclientName
– название фирмы клиента, строковое значение:carrier
– данные о перевозчике, со следующими полямиfirstName
– имя перевозчика, строковое значениеpatronomyc
– отчество перевозчика, строковое значениеlastName
– отчество перевозчика, строковое значениеphone
– контактный телефон перевозчика, строковое значение, номер телефона начинаетс с плюсыati
– код ATI перевозчика, строковое значение, тип положительное целое число
comments
– комментарий к заявке, строковое значениеcreatedAt
– дата создания заявки в формате ISO, строковое значение, автоматически создаётся на сервере
Запросы
Обращение к ресурсам сущности происходит следующим образом.
Получить список заявок
Путь: GET /requisition?page=1&perPage=10
Параметры запроса:
Реализованна пагинация.
page
– страница, необязательное, по умолчанию значение "1"perPage
– количество заявок на странице, необязательное, по умолчанию значение "10"
Пример ответа сервера:
{
"message": "OK",
"pagination": {
"page": 1,
"perPage": 10,
"all": 50
},
"data": []
}
message
– сообщение от сервера, данное поле существует и в других запросахpagination
– информация о пагинацииall
– общее количество заявок
data
– масив содержащий объекты заявок согласно схеме выше, данное поле существует и в других запросах, в нём находяться запрашиваемые данные
Получить заявку по номеру
Путь: GET /requisition/{id}
id
– номер заявки
Пример ответа сервера:
{
"message": "OK",
"data": {
"_id": 1,
"clientName": "ООО \"Фрукты и Овощи\"",
"carrier": {
"firstName": "Иван",
"patronymic": "Иванович",
"lastName": "Иванов",
"phone": "+79052671294",
"ati": 12345
},
"comments": "Задача организации в формировании соответствующий условий.",
"createdAt": "2020-09-01T06:09:49.133Z"
}
}
Создание заявки
Путь: POST /requisition
Пример тела запроса к серверу:
{
"clientName": "ООО \"Фрукты и Овощи\"",
"carrier": {
"firstName": "Иван",
"patronymic": "Иванович",
"lastName": "Иванов",
"phone": "+79123481294",
"ati": 12345
},
"comments": "Задача организации."
}
clientName
– обязательное полеcarrier
– обязательное полеfirstName
– обязательное полеpatronomyc
– обязательное полеlastName
– обязательное полеphone
– обязательное полеati
– обязательное поле
comments
– необязательное поле
Пример ответа сервера:
Возращает созданную заявку с датой создания и с её номером
{
"message": "Created",
"data": {
"_id": 51,
"clientName": "ООО \"Фрукты и Овощи\"",
"carrier": {
"firstName": "Иван",
"patronymic": "Иванович",
"lastName": "Иванов",
"phone": "+79123481294",
"ati": 12345
},
"comments": "Задача организации в формировании соответствующий условий.",
"createdAt": "2020-09-01T05:58:05.698Z"
}
}
Обновление заявки
Путь: PUT /requisition/{id}
id
– номер заявки
Пример тела запроса к серверу:
Все поля являются необязательными
{
"clientName": "ООО \"Фрукты и Овощи\"",
"carrier": {
"firstName": "Иван",
"patronymic": "Иванович",
"lastName": "Иванов",
"phone": "+79123481294",
"ati": 12345
},
"comments": "Задача организации."
}
Пример ответа сервера:
Возращает изменёную заявку:
{
"message": "Updated",
"data": {
"_id": 1,
"clientName": "ООО \"Фрукты и Овощи\"",
"carrier": {
"firstName": "Иван",
"patronymic": "Иванович",
"lastName": "Иванов",
"phone": "+79052671294",
"ati": 12345
},
"comments": "Задача организации",
"createdAt": "2020-09-01T06:09:49.133Z"
}
}
Удалени заявки
Путь: DELETE /requisition/{id}`
id
– номер заявки
Пример ответа сервера:
{
"message": "Removed",
"_id": 1
}
Другие ответы сервера
Страница не найдена (404):
// тело ответа
{
"message": "Not Found"
}
Неправильный запрос (400):
// тело ответа
{
"message": "carrier.ati must be a number"
}