https://github.com/davidromanovizc/kv-storage-api
API для KV-хранилища на базе Tarantool
https://github.com/davidromanovizc/kv-storage-api
Last synced: 4 months ago
JSON representation
API для KV-хранилища на базе Tarantool
- Host: GitHub
- URL: https://github.com/davidromanovizc/kv-storage-api
- Owner: DavidRomanovizc
- License: mit
- Created: 2024-08-17T10:46:18.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-08-20T20:54:30.000Z (10 months ago)
- Last Synced: 2024-12-31T01:27:37.789Z (6 months ago)
- Language: Python
- Size: 57.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Key-Value storage API
## :books: Содержание
- [Запуск проекта](#construction_worker-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0)
- [API Документация](#api-%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F)
- [Аутентификация](#%D0%B0%D1%83%D1%82%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F)
- [1. Логин](#1-%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD)
- [2. Проверка доступа](#2-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0)
- [Управление данными](#%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8)
- [3. Чтение данных пачками](#3-%D1%87%D1%82%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BF%D0%B0%D1%87%D0%BA%D0%B0%D0%BC%D0%B8)
- [4. Запись данных пачками](#4-%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%BF%D0%B0%D1%87%D0%BA%D0%B0%D0%BC%D0%B8)## :construction_worker: Запуск проекта
Запустите проект с помощью Docker Compose:
```sh
$ docker-compose up -- build
```## API Документация
### Аутентификация
#### 1. Логин
**URL**: `http://0.0.0.0:8000/api/login`
**Метод**: `POST`
**Описание:** Эта конечная точка используется для аутентификации пользователя. При успешной аутентификации возвращается
токен
доступа.##### Пример запроса
```json
{
"username": "admin",
"password": "presale"
}
```##### Пример ответа
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
```##### Возможные ошибки
- 401 Unauthorized: Неверные учетные данные
- 422 Unprocessable Entity: Неверный формат данных для входа#### 2. Проверка доступа
**URL**: `http://0.0.0.0:8000/api/verify-access`
**Метод**: `POST`
**Описание:** Эта конечная точка используется для проверки валидности токена доступа.
> Внедрена для аутентификации через отдельный сервис
##### Пример запроса
Заголовок запроса должен содержать токен в формате Bearer:
```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```##### Пример ответа
```json
{
"access_granted": true
}
```##### Возможные ошибки
- 401 Unauthorized: Токен не найден или невалиден
### Управление данными
#### 3. Чтение данных пачками
**URL**: `http://0.0.0.0:8000/api/read`
**Метод**: `GET`
**Описание:** Эта конечная точка используется для получения данных на основе переданных ключей
##### Пример запроса
```json
{
"keys": [
"key1",
"key2",
"key3"
]
}
```##### Пример ответа
```json
{
"data": {
"key1": "value1",
"key2": "value2",
"key3": 1
}
}
```##### Возможные ошибки
- 422 Unprocessable Entity: Неверный формат данных
- 404 Not Found: Данные по указанным ключам не найдены#### 4. Запись данных пачками
**URL**: `http://0.0.0.0:8000/api/write`
**Метод**: `GET`
**Описание:** Эта конечная точка используется для записи данных пачками
##### Пример запроса
```json
{
"data": {
"key1": "value1",
"key2": "value2",
"key3": 1
}
}
```##### Пример ответа
```json
{
"status": "success"
}
```##### Возможные ошибки
- 422 Unprocessable Entity: Неверный формат данных
- 409 Conflict: Запись с таким ключом уже существует
- 400 Bad Request: Нарушение целостности данных
- 503 Service Unavailable: Ошибка соединения с базой данных или другим внешним сервисом