Разработать и поднять простой API-сервер с базой данных
Требуется написать и поднять сервер с простейшей базой данных.
База содержит 2 НЕ связанные таблицы:
1. SerialKeysTable - список серийных ключей.
SerialKey - строка, 300 символов.
DeviceId - строка, 300 символов.
IsActive - булевое.
2. UnauthorizedTriesTable - попытки активации просроченных ключей.
SerialKey - строка, 300 символов.
DeviceId - строка, 300 символов.
DateTime - дата и время попытки авторизации
Сервер должен обрабатывать 4 простых GET запроса:
1. Создание нового ключа
Эндпоинт: /AddSerialKey?key='someKey'&pass='adminPass'
Параметры:
1. key - строка завернутая в base64 (не обязательный)
2. pass - пароль для запроса, хардкодом.
Описание: Добавляет в базу данных новую запись с указанным серийным ключем.
IsActive при создании в состоянии False.
Если параметр key пуст или отсутствует - то сгенерировать случайный ключ на 300 символов, любым способом.
Результат: 200 и указанный или сгенерированный ключ.
Возможные ошибки:
1. 400 Такой ключ уже есть.
2. 401 Не верный пароль
2. Активация серийного ключа.
Эндпоинт: /UseSerialKey?key='someKey'&deviceId='someDeviceId'
Параметры:
1. key - строка завернутая в base64
1. deviceId - строка завернутая в base64
Описание: Ищет в базе ключ. Если ключ есть, то изменяет его IsActive на True и вписывает deviceId.
Если ключа нету или IsActive уже равен True, выдать ошибку 404 и сделать записть в таблице UnauthorizedTriesTable.
Результат: 200.
Возможные ошибки:
1. 404
3. Удаление серийного ключа.
Эндпоинт: /DeleteSerialKey?key='someKey'&pass='adminPass'
Параметры:
1. key - строка завернутая в base64
2. pass - пароль для запроса, хардкодом.
Описание: Удаляет указанный ключ из базы.
Результат: 200.
Возможные ошибки:
1. 404 Ключ не найден.
2. 401 Не верный пароль.
4. Получение данных из таблицы UnauthorizedTriesTable.
Эндпоинт: /GetUnauthorizedTries?offset=0&count=100&pass='adminPass'
Параметры:
1. offset - сдвиг по записям
2. count - кол-во записей
3. pass - пароль для запроса, хардкодом.
Описание: Получить указанное кол-во записей со сдвигом
Результат: 200 и список записей.
Работать все должно на linux-хостинге. Данные хостинга будут предоставлены исполнителю.