An open API service indexing awesome lists of open source software.

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

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: Ошибка соединения с базой данных или другим внешним сервисом