GitXplorerGitXplorer
M

server-rest-api

public
0 stars
0 forks
0 issues

Commits

List of commits on branch main.
Verified
f5dbe0f2f2cc834fb867a5e4d993c1a6fd302170

update README.md

MMaximSmolskiy committed 4 years ago
Verified
7e9fd9903927366ad3a7c04f22ad000c5d8e5476

update README.md

MMaximSmolskiy committed 4 years ago
Unverified
d1a890844e614b321afd3fc5594947e62cb2a54f

fix

MMaximSmolskiy committed 4 years ago
Unverified
8c676fc38d586f70d9509331d93da2c4769a8795

add pagination field

MMaximSmolskiy committed 4 years ago
Unverified
07db5929f9c99d1c84ec45e7724acbee661092d5

change filters

MMaximSmolskiy committed 4 years ago
Unverified
d9c464ccf9af4348ffc3a02e127ecccd09460d26

Merge branch 'main' of https://github.com/MaximSmolskiy/server-rest-api into main

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 - автоматический перезапуск сервера

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