Написать REST API для просмотра информации о сотрудниках
В работе в первую очередь оценивается структура приложения и следование лучшим практикам написания REST API (см. видео)
В системе предусмотрена одна роль - пользователь
Должна быть реализована система аутентификации и защиты ресурсов
- все необходимые данные хранятся в lowdb
-
список сотрудников (имя, фамилия, должность, возраст, зарплата)
-
фильтр по имени (и фамилии) без учета регистра
-
сортировка по зарплате
-
пагинация по 25 элементов на страницу
-
фильтры и сортировка работают со всеми данными (не только текущая страница)
- выводит всю информацию: имя, фамилия, должность, дата рождения, зарплата
-
сохранение доступно только пользователям
-
валидируем данные перед сохранением
-
имя, фамилия – текст не более 100 символов
-
дата рождения – дата
-
должность – по списку (Junior Software Engineer, Software Engineer, Senior .., Lead ..)
-
зарплата – число
-
- удаление доступно только пользователям
-
принимает имя пользователя и пароль
-
выдает JWT токен с временем жизни 5 минут
-
для авторизации используем Bearer токен
-
Весь код должен соответствовать стандарту XO
-
camelCase в названиях файлов (и именах переменных)
-
kebab-case в роутах ресурсов
- На все некорректные действия пользователя должно выводиться информативные сообщения об ошибках
-
Все ресурсы должны быть описаны в API документации (swagger)
-
30% кода приложения должно быть покрыто unit и e2e тестами
-
Логирование ошибок в файл
Помните - всё написанное должно быть написано понятно, правильно и красиво
Лучше не успеть что-то доделать, но сделанное должно быть сделано хорошо!
Библиотеки для создания REST API
https://github.com/expressjs/express - фреймворк для API (можно взять koa)
https://github.com/jaredhanson/passport - фреймворк авторизации
https://github.com/typicode/lowdb - БД с удобным интерфейсом
- stepik.org - Курс JavaScript для начинающих
- Материалы сайта learn.javascript.ru в дополнение (без ООП)
- Видео с канала RSSchool по NodeJS: ExpressJS, Authentication
- Скринкаст по NodeJS (первая часть до 22 модуля, вторая часть только 1 и 2 модули)
- Видео по JWT – первая и третья части
- Designing a Beautiful REST+JSON API
- Документация NodeJS
- Документация по перечисленным модулям
https://www.getpostman.com/downloads/ - удобный интерфейс для тестирования REST API
https://github.com/xojs/xo - проверка стиля
https://github.com/remy/nodemon - автоматический перезапуск сервера
.. по необходимости вы можете использовать что-то ещё