An open API service indexing awesome lists of open source software.

https://github.com/shevchenkool/node.js


https://github.com/shevchenkool/node.js

Last synced: 9 months ago
JSON representation

Awesome Lists containing this project

README

          

# Node.js
## Task 1
У цьому проєкті реалізовано CLI для роботи з контактами.Це простий Node.js CLI-додаток для керування контактами, які зберігаються у файлі **`contacts.json`**.
У файлі **`contacts.js`** реалізовані асинхронні функції для роботи з колекцією:
- **`listContacts`** — повертає весь список контактів;
- **`getContactById`** — шукає контакт за `id`;
- **`addContact`** — додає новий контакт до файлу;
- **`removeContact`** — видаляє контакт за `id`.
Файл **`app.js`** відповідає за інтерфейс командного рядка. За допомогою пакета **`commander`** він зчитує аргументи, передає їх у функцію **`invokeAction`**, яка викликає потрібний метод з **`contacts.js`**, та виводить результат у консоль.

## Task 2
У цьому проєкті реалізовано **REST API** для роботи з колекцією контактів, що зберігаються у **JSON-файлі**.
### 📂 Структура проєкту
- **bd/contacts.json** — база даних контактів у вигляді JSON-файлу.
- **controllers/contactControllers.js** — контролери, що обробляють запити REST API і викликають відповідні сервіси.
- **services/contactServices.js** — функції для роботи з даними (читання, додавання, оновлення, видалення контактів у JSON).
- **schemas/contactSchemas.js** — схеми валідації даних за допомогою пакету `Joi` для **POST** та **PUT** запитів.
- **routes/contactRoutes.js** — маршрути API, що пов’язують HTTP-запити з контролерами.
- **helpers/ValidateBody.js** — middleware для валідації тіла запиту перед контролером.
- **helpers/HttpError.js** — утиліта для роботи з помилками.
- **app.js** — основний файл запуску сервера.
- **package.json** — файл з описом проєкту, залежностями і скриптами запуску.
### 🔹 Основні можливості API
- **GET** `/api/contacts` — отримати список усіх контактів.
- **GET** `/api/contacts/:id` — отримати контакт за `id`.
- **POST** `/api/contacts` — додати новий контакт з валідацією обов’язкових полів:
- `name`
- `email`
- `phone`
- **PUT** `/api/contacts/:id` — оновити контакт частково з перевіркою на наявність хоча б одного поля.
- **DELETE** `/api/contacts/:id` — видалити контакт за `id`.