GitXplorerGitXplorer
M

server-rest-api

public
0 stars
0 forks
0 issues

Commits

List of commits on branch main.
Unverified
80efcc63d42c420c106c737298177d10853db5b9

fix

MMaximSmolskiy committed 4 years ago
Verified
9c2e282ba59a085d1fc8cdfa8d72e15d6d892975

Create .gitignore

MMaximSmolskiy committed 4 years ago
Verified
f0995e63d331b7260f86c2cf0c551846bcc5c32f

Delete .gitignore

MMaximSmolskiy committed 4 years ago
Unverified
5f8d3fdc709561c6a20e9d2067dc888b160d09fd

fix

MMaximSmolskiy committed 4 years ago
Unverified
fa9bac70b02b56eea3d2b78481e8b2aa7452803f

fix

MMaximSmolskiy committed 4 years ago
Unverified
057530641c194d094409ca09421737a287c2b3ed

fix

MMaximSmolskiy committed 4 years ago

README

The README file for this repository.

Написать REST API для просмотра информации о сотрудниках

В работе в первую очередь оценивается структура приложения и следование лучшим практикам написания REST API (см. видео)

В системе предусмотрена одна роль - пользователь
Должна быть реализована система аутентификации и защиты ресурсов

Содержание

Серверное REST API

Источники данных

  • все необходимые данные хранятся в lowdb

Список сотрудников

  • список сотрудников (имя, фамилия, должность, возраст, зарплата)

  • фильтр по имени (и фамилии) без учета регистра

  • сортировка по зарплате

  • пагинация по 25 элементов на страницу

  • фильтры и сортировка работают со всеми данными (не только текущая страница)

Профиль сотрудника

  • выводит всю информацию: имя, фамилия, должность, дата рождения, зарплата

Сохранение сотрудника

  • сохранение доступно только пользователям

  • валидируем данные перед сохранением

    • имя, фамилия – текст не более 100 символов

    • дата рождения – дата

    • должность – по списку (Junior Software Engineer, Software Engineer, Senior .., Lead ..)

    • зарплата – число

Удаление сотрудника

  • удаление доступно только пользователям

Аутентификация

  • принимает имя пользователя и пароль

  • выдает JWT токен с временем жизни 5 минут

  • для авторизации используем Bearer токен

Прочие требования

Код стайл

  1. Весь код должен соответствовать стандарту XO

  2. camelCase в названиях файлов (и именах переменных)

  3. kebab-case в роутах ресурсов

Не функциональные требования

  1. На все некорректные действия пользователя должно выводиться информативные сообщения об ошибках

Доп. требования (после выполнения основных, в порядке приоритета)

  1. Все ресурсы должны быть описаны в API документации (swagger)

  2. 30% кода приложения должно быть покрыто unit и e2e тестами

  3. Логирование ошибок в файл

Помните - всё написанное должно быть написано понятно, правильно и красиво
Лучше не успеть что-то доделать, но сделанное должно быть сделано хорошо!

Технологии

Библиотеки для создания REST API

https://github.com/expressjs/express - фреймворк для API (можно взять koa)
https://github.com/jaredhanson/passport - фреймворк авторизации
https://github.com/typicode/lowdb - БД с удобным интерфейсом

Информация для изучения

  1. stepik.org - Курс JavaScript для начинающих
  2. Материалы сайта learn.javascript.ru в дополнение (без ООП)
  3. Видео с канала RSSchool по NodeJS: ExpressJS, Authentication
  4. Скринкаст по NodeJS (первая часть до 22 модуля, вторая часть только 1 и 2 модули)
  5. Видео по JWT – первая и третья части
  6. Designing a Beautiful REST+JSON API
  7. Документация NodeJS
  8. Документация по перечисленным модулям

Полезные ссылки

https://www.getpostman.com/downloads/ - удобный интерфейс для тестирования REST API
https://github.com/xojs/xo - проверка стиля
https://github.com/remy/nodemon - автоматический перезапуск сервера

.. по необходимости вы можете использовать что-то ещё