Skip to content

Latest commit

 

History

History
49 lines (43 loc) · 6.77 KB

simple-crud-api.md

File metadata and controls

49 lines (43 loc) · 6.77 KB

In-memory CRUD API

Базовая реализация

  1. В репозитории с приложением имеется файл Readme.md, содержащий подробные инструкции по установке, запуску и использованию приложения плюс 10 баллов
  2. Сервер возвращает соответствующие ответы на запросы:
  • GET /person:
    • Сервер возвращает статус код 200 и все записи плюс 6 баллов
  • GET /person/{personId}:
    • Сервер возвращает статус код 200 и запись с id === personId, если такая запись есть плюс 10 баллов
    • Сервер возвращает статус код 400 и соответствующее сообщение, если personId невалиден (не uuid) плюс 6 баллов
    • Сервер возвращает статус код 404 и соответствующее сообщение, если запись с id === personId не найдена плюс 6 баллов
  • POST /person
    • Сервер возвращает статус код 201 и свежесозданную запись плюс 10 баллов
    • Сервер возвращает статус код 400 и соответствующее сообщение, если тело запроса не содержит обязательных полей плюс 6 баллов
  • PUT /person/{personId}
    • Сервер возвращает статус код 200 и обновленную запись плюс 10 баллов
    • Сервер возвращает статус код 400 и соответствующее сообщение, если personId невалиден (не uuid) плюс 6 баллов
    • Сервер возвращает статус код 404 и соответствующее сообщение, если запись с id === personId не найдена плюс 6 баллов
  • DELETE /person/{personId}
    • Сервер возвращает статус код 204 если запись найдена и удалена плюс 10 баллов
    • Сервер возвращает статус код 400 и соответствующее сообщение, если personId невалиден (не uuid) плюс 6 баллов
    • Сервер возвращает статус код 404 и соответствующее сообщение, если запись с id === personId не найдена плюс 6 баллов

Продвинутая реализация:

  • Ошибки, возникающие при обработке запроса на /person корректно обрабатываются и в случае их возникновения API возвращает статус код 500 с соответствующим сообщением плюс 10 баллов
  • Запросы на несуществующие ресурсы (например, /some/non/existing/resource) корректно обрабатываются (возвращается human friendly сообщение и 404 статус код) плюс 6 баллов
  • Приложение запускается в development-режиме при помощи nodemon (имеется npm скрипт start:dev, который запускает отслеживание изменений в файлах приложения) плюс 6 баллов
  • Приложение запускается в production-режиме при помощи webpack (имеется npm скрипт start:prod, который запускает процесс сборки webpack и после этого запускает файл с билдом) плюс 6 баллов
  • Значение PORT хранится в .env файле плюс 6 баллов

Hacker scope

  • Имеются E2E тесты, покрывающие логику приложения (не меньше 3 различных сценариев) плюс 30 баллов Пример сценария:
  1. GET-запросом получаем все объекты (ожидается пустой массив)
  2. POST-запросом создается новый объект (ожидается ответ, содержащий свежесозданный объект)
  3. GET-запросом пытаемся получить созданный объект по его id (ожидается созданный объект)
  4. PUT-запросом пытаемся обновить созданный объект (ожидается ответ, содержащий обновленный объект с тем же id)
  5. DELETE-запросом удаляем созданный объект по id (ожидается подтверждение успешного удаления)
  6. GET-запросом пытаемся получить удаленный объект по id (ожидается ответ, что такого объекта нет)

Штрафы

  • Полная ссылка на репозиторий с решением отличается от https://github.com/%your-github-id%/simple-crud-api минус 100 баллов
  • Использование любых пакетов, библиотек, фреймворков кроме nodemon, dotenv, cross-env, eslint и его плагинов, webpack и его плагинов, uuid, а также библиотек, используемых для тестирования минус 130 баллов
  • Имеются коммиты после дедлайна, за исключением коммитов, изменяющих исключительно Readme.md либо вспомогательные файлы (.gitignore, .prettierrc.json и т.д.) минус 30% от максимального балла за задание (минус 49 баллов)
  • Отсутствует PR либо его описание некорректно (отсутствуют либо некорректен любой из 3 обязательных пунктов) минус 20 баллов
  • Отсутствует отдельная ветка для разработки минус 20 баллов
  • Меньше 3 коммитов в ветке разработки, не считая коммиты, вносящие изменения только в Readme.md либо вспомогательные файлы (.gitignore, .prettierrc.json и т.д.) минус 20 баллов