-
Notifications
You must be signed in to change notification settings - Fork 0
ILugaro/TypeScript-Node-Express-MongoDB
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Тестовое задание: клент-серверное решение с использованием typescript и node.js для хранения и управления базой данных автомобилей различных брендов.
Решение должно состоять из двух приложений: серверного и клиентского. В приложениях должны быть использованы следующие технологии:
Серверное приложение:
1. Node.JS
2. TypeScript
3. Express или любой express-совместимый web-сервер
4. REST API
5. Методы, которые позволяют добавлять автомобили, удалять и получать список с сортировкой. Опубликовать эти методы в REST API
6. БД MongoDB для персистентного хранения информации об автомобилях. В качестве сервера MongoDB выбрать любой на своё усмотрение, можно публичный MongoDB Atlas
Клиентское приложение:
1. Node.JS
2. TypeScript
3. Интерпретатор командной строки. В параметрах обязательно должны быть действие и аргументы этого действия в любом формате.
4. При запуске из командной строки с параметрами нужно выполнять подключение к Серверу и выполнять REST API операции.
5. Данные, полученные от Сервера выводить в консоль.
Примерная структура "Автомобиль":
- Бренд
- Название
- Год производства
- Цена
- любые дополнительные поля, которые нужны для решения задачи
КЛИЕНТ
node CarsAPI параметр1 параметр2 параметр3 параметр4 параметр5 (в папке "built" после "npm run dev")
Параметр1:
"help" - получение подсказки по командам
"show" - вывести в консоль список автомобилей отсортированны по цене от меньшего к большему.
Для изменения сортировки необходимо вторым параметром передать чвойство для сортировки ("brand"/"name"/"price"/"year"),
а третим параметром - "least_in_first" или "biggest_in_first"(от меньшего к большему или от большего к меньшему соответственно)
"add" - добавление нового автомобиля. Затем 4 обязательных параметр в таком порядке: бренд, имя, год, цена.
"del" - удаление автомобиля. Вторым параметром необходимо указать id удаляемого автомобиля.
Примеры:
node CarsAPI help
node CarsAPI show
node CarsAPI show year biggest_in_first
node CarsAPI add Ford "Scorpio 2" 1997 5500
node CarsAPI del 63a0127da7a03282b09a9599
СЕРВЕР
Запуск: "npm run server" (в корневом каталоге) или "node index" (в папке "built" после "npm run dev")
Адрес запросов .../api . (localhost:3000/api)
GET запрос - получение массива всех автомобилей.
Параметры:
Может быть отправлен без параметров - в таком случае массив будет отсортирован по цене от меньшей к большей.
Для настройки сортировки необходимо передать параметры sort и typeSort.
sort - это параметр сортировки, может быть "price", "brand", "year", "price".
typeSort - это тип сортировки, может быть "least_in_first" или "biggest_in_first"(от меньшего к большему или от большего к меньшему соответственно).
*Использование sort и typeSort в отдельности друг от друга не допустимы.
Ответ:
Объект с ключами data и err.
В случае успешного запроса будет возвращен статус 200, err - пустая строка:
{data:[{__id:string, brand:string, name:string, year:number, price:number}, ...], err: ''};
В случае ошибки статус будет отличаться от 200, data - пустой массив, а err строка с текстом ошибки:
{data:[], err:'string'}.
POST запрос - добавление нового автомобиля в БД.
Параметры:
Параметры body: brand:srting, name:string, year:number, price:number.
Все параметры являются обязательными.
Ответ:
В случае успешного добавления будет возвращен статус 201 и и в виде строки __id добавленного автомобиля.
В случае ошибки статус будет отличаться от 201, а в ответе будет текст ошибки.
DELETE запрос - удаление автомобиля.
Параметры:
__id автомобиля который необходимо удалить.
Ответ:
В случае успешного удаления будет возвращен статус 204 без текста.
В случае ошибки статус будет отличаться от 204, а в ответе будет текст ошибки.
About
Тестовое задание клиент-серверное приложение для БД автомобилей
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published