Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dm-zhuk/goit-node-rest-api
Topics 4-7. #goit-node-rest-api
https://github.com/dm-zhuk/goit-node-rest-api
dotenv express glitch gravatar-api jest-tests nodejs rest-api
Last synced: about 6 hours ago
JSON representation
Topics 4-7. #goit-node-rest-api
- Host: GitHub
- URL: https://github.com/dm-zhuk/goit-node-rest-api
- Owner: dm-zhuk
- License: mit
- Created: 2024-07-14T10:11:32.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-08-21T22:46:17.000Z (3 months ago)
- Last Synced: 2024-08-22T23:58:41.735Z (3 months ago)
- Topics: dotenv, express, glitch, gravatar-api, jest-tests, nodejs, rest-api
- Language: JavaScript
- Homepage: https://dm-zhuk.github.io/goit-node-rest-api/
- Size: 365 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
#goit-node-rest-api
Написати REST API для роботи з колекцією контактів. Для роботи з REST API використовуй [Postman] .Крок 1
Cтвори репозиторій з назвою goit-node-rest-api і помісти на головну гілку (main) файли з папки src. Завваж: папки src в репозиторії бути не повинно, тебе цікавить лише її вміст.
Створи гілку hw02-express з гілки main.
Встанови модулі командою
npm iКрок 2
У файл contactsServices.js (знаходиться в папці services) скопіюй функції з файла contacts.js з домашнього завдання до модуля 1.Крок 3
Напиши контролери у файлі contactsControllers.js (знаходиться у папці controllers) з урахуванням наведених нижче вимог.
REST API повинен підтримувати такі раути:
GET /api/contactsВикликає функцію-сервіс getContacts для роботи з json-файлом contacts.json
Повертає масив всіх контактів в json-форматі зі статусом 200GET /api/contacts/:id
Викликає функцію-сервіс getOneContact для роботи з json-файлом contacts.json
Якщо контакт за id знайдений, повертає об'єкт контакту в json-форматі зі статусом 200
Якщо контакт за id не знайдено, повертає json формату {"message": "Not found"} зі статусом 404DELETE /api/contacts/:id
Викликає функцію-сервіс removeContact для роботи з json-файлом contacts.json
Якщо контакт за id знайдений і видалений, повертає об'єкт видаленого контакту в json-форматі зі статусом 200
Якщо контакт за id не знайдено, повертає json формату {"message": "Not found"} зі статусом 404POST /api/contacts
Отримує body в json-форматі з полями {name, email, phone}. Усі поля є обов'язковими - для валідації створи у файлі contactsSchemas.js (знаходиться у папці schemas) схему з використаням пакета joi
Якщо в body немає якихось обов'язкових полів (або передані поля мають не валідне значення), повертає json формату {"message": error.message} (де error.message - змістовне повідомлення з суттю помилки) зі статусом 400
Якщо body валідне, викликає функцію-сервіс createContact для роботи з json-файлом contacts.json, з передачею їй даних з body
За результатом роботи функції повертає новостворений об'єкт з полями {id, name, email, phone} і статусом 201PUT /api/contacts/:id
Отримує body в json-форматі з будь-яким набором оновлених полів (name, email, phone) (всі поля вимагати в боді як обов'язкові не потрібно: якщо якесь із полів не передане, воно має зберегтись у контакта зі значенням, яке було до оновлення)
Якщо запит на оновлення здійснено без передачі в body хоча б одного поля, повертає json формату {"message": "Body must have at least one field"} зі статусом 400.
Передані в боді поля мають бути провалідовані - для валідації створи у файлі contactsSchemas.js (знаходиться у папці schemas) схему з використанням пакета joi. Якщо передані поля мають не валідне значення, повертає json формату {"message": error.message} (де error.message - змістовне повідомлення з суттю помилки) зі статусом 400
Якщо з body все добре, викликає функцію-сервіс updateContact, яку слід створити в файлі contactsServices.js (знаходиться в папці services). Ця функція має приймати id контакта, що підлягає оновленню, та дані з body, і оновити контакт у json-файлі contacts.json
За результатом роботи функції повертає оновлений об'єкт контакту зі статусом 200.
Якщо контакт за id не знайдено, повертає json формату {"message": "Not found"} зі статусом 404Зверни увагy
Валідацію body можна як здійснювати у контролері, так і створити для цих цілей окрему міддлвару, яка буде викликатись до контролера. Для створення міддлвари можеш скористатись функцією validateBody.js, яку знайдеш у папці helpers
Для роботи з помилками можна скористатись функцією HttpError.js, яку знайдеш у папці helpersЯкщо вказані функції використовувати не будеш, видали їх з проєкту перед тим, як надсилатимеш роботу на перевірку ментору
Критерії прийому
Створено репозиторій з домашнім завданням
Посилання на репозиторій (гілку з домашнім завданням) надіслане ментору на перевірку
Код відповідає технічному завданню (мають бути в точності дотримані, зокрема, вимоги стосовно струкутри body, контенту та статусу відповідей на запити тощо)
У коді немає закоментованих ділянок коду
Проєкт коректно працює з актуальною LTS-версією Node