Щоб перевірити роботу REST API пиши так:
Відповідь
— повертається масив всіх контактів в json-форматі зі статусом 200
Відповідь
— якщо такий id є, повертається об'єкт контакту в json-форматі зі статусом 200; якщо такого id немає, повертається json з ключем "message": "not found" і статусом 404
Отримує body в форматі {name, email, phone} (усі поля обов'язкові та мають бути стрінгами)
Відповідь
— якщо в body немає якихось обов'язкових полів або вони не строки, повертається json з ключем {"message": "missing required field(s) / non-string field(s)"} і статусом 400; якщо з body все добре, додає унікальний ідентифікатор в об'єкт контакту i повертається об'єкт з доданим id {id, name, email, phone} і статусом 201
Відповідь
— якщо такий id є, повертається json формату {"message": "contact deleted"} і статусом 200; якщо такого id немає, повертається json з ключем "message": "not found" і статусом 404
Отримує body в json-форматі c оновленням будь-яких полів name, email и phone (валідадія присутня як у додавані контакту)
Відповідь
— якщо з body всe добре - повертається оновлений об'єкт контакту зі статусом 200, інакше повертається json з ключем "message": "not found" і статусом 404
Отримує body в json-форматі з оновленням поля favorite (має бути значення boolean)
Відповідь
— якщо в body немає якихось обов'язкових полів або вони не строки, повертається json з ключем {"message":"missing field favorite"} і статусом 400; якщо з body всe добре - повертається оновлений об'єкт контакту зі статусом 200, інакше повертається json з ключем "message": "not found" і статусом 404
Отримує body в форматі {email, password, subscription} (перші два поля обов'язкові, всі поля мають бути стрінгами, валідація присутня)
Відповідь
— при помилці валідації повертається "Помилка від Joi або іншої бібліотеки валідації" зі статусом 400; якщо пошта вже використовується кимось іншим повертається ResponseBody: {"message": "Email in use"} зі статусом 409; якщо з body все добре повертається об'єкт наступного виду { "user": { "email": "example@example.com", "subscription": "starter" } } і статусом 201 (поле subscription додається по замовчуванню, якщо його не вказати при реєстрації через налаштування моделі "user" - subscription: { type: String, enum: ["starter", "pro", "business"], default: "starter" })
Отримує body в форматі {email, password} (всі поля обов'язкові та мають бути стрінгами, валідація присутня)
Відповідь
— при помилці валідації повертається "Помилка від Joi або іншої бібліотеки валідації" зі статусом 400; якщо пароль або email невірний повертається ResponseBody: {"message": "Email or password is wrong"} зі статусом 401; якщо з body все добре шукається пароль для користувача в БД, якщо пароль знаходиться створюється токен, зберігається в поточному полі юзера і повертається об'єкт наступного виду ResponseBody: { "token": "exampletoken", "user": { "email": "example@example.com", "subscription": "starter" } } і статусом 200
Отримує пусте body з обовʼязковим заголовком Authorization: "Bearer {{token}}"
Відповідь
— якщо користувача у моделі "user" за _id не існує повертається ResponseBody: {"message": "Not authorized"} і статус 401; в іншому випадку, видаляється токен у поточного юзера і повертається статус 204
Запит відправляється з обовʼязковим заголовком Authorization: "Bearer {{token}}"
Відповідь
— якщо користувача не існує повертається ResponseBody: {"message": "Not authorized"} і статус 401; в іншому випадку повертається ResponseBody: { "email": "example@example.com", "subscription": "starter" } і статус 200
npm start
— старт сервера в режимі productionnpm run start:dev
— старт сервера в режимі розробки (development)npm run lint
— запустити виконання перевірки коду з eslint, необхідно виконувати перед кожним PR та виправляти всі помилки лінтераnpm run lint:fix
— та ж перевірка лінтера, але з автоматичними виправленнями простих помилок