Eve - REST Api для Python и MongoDb

Eve - REST Api для Python + MongoDb

 

EVE является простым, но очень мощным инструментом, который позволит Вам построить полноценный и простой в использовании REST API за минимальное количество времени на python. Установка Eve достаточно проста, так как является обычным пакетом Python.

$ pip install eve

После установки пакета необходимо создать два файла в директорииии проекта: run.py и settings.py

Файл run.py содержит основной код программы, для простого проложения в нем достаточно написать следующее:

from eve import Eve

app = Eve()

if __name__ ==== '__main__':
    app.run()

В файле settings.py находится описание конфигурации приложения: подключение к базе даннных, разрешенные http запросы, домены, заголовки, а так же описание структуры базы данных.

MONGO_HOST = 'localhost' # Сервер MongoDb
MONGO_PORT = 27017 # Порт MongoDb
MONGO_DBNAME = 'Shop' # Имя базы данных
MONGO_USERNAME = 'user' # Пользователь
MONGO_PASSWORD = 'password' # Пароль


RESOURCE_METHODS = ['GET', 'POST', 'DELETE'] # Включение методов для ресурсов(коллекций)
ITEM_METHODS = ['GET', 'PATCH', 'PUT', 'DELETE'] # Включение методов для элемента ресурса (коллекции)

X_DOMAINS = '*' # Домены (IP), с которых разрешена работа с приложением (* - всесесе домены)
X_HEADERS = ['Content-Type', 'Accept', 'If-Match', 'Authorization', 'Cache-Control', 'Pragma', 'Expires'] # Разрешенные заголовки

# Описание документов
DOMAIN = {

    'products': { # Документ Продукция
        
        'schema': # Описание схемы
        {
            'title': # Описание поля
            {
                'type': 'string', # Тип поля
                'required': True # Обязательный
                'unique': True # Уникальный
            },
            'description': { 'type': 'string' },
            'price': { 'type': 'double', 'required': True }
        }
        
        # Настройка позволяет получать продукт не по id, а по полю title
        'additional_lookup': {
            'url': "regex('[\w]+')",
            'field': 'title',
        },

    },

Базовое приложение готово. Теперь его можно запустить (по умолчанию приложение работает на 5000 порту):

$ python3.5 run.py

После запуска приложение само создаст документы в базе данных на основе схем из файла settings.py. Теперь можно выполнять HTTP запросы для манипуляций с данными. Зпрос для добавления продукта выглядит следующим образом (используется curl):

$ curl -d '{"title": "LG Nexus 5", "description": "Телефон", "price": 11560}' -H 'Content-Type: application/json'  http://127.0.0.1:5000/products

Помимо добавления данных полей, описанных в схеме документа, будут созданы дополнительные поля:

 Поле  Описание поля
_id  Уникальный идентификатор элемента
 _created  Дата создания элемента
 _updated  Дата последнего редактирования элемента
 _etag  Обеспечивает контроль параллелизма и условных запросов (изменяется при каждом редактировании элемента, указывается в заголовке If-Match)

В библиотеке присутствуют возможности пред- и постобработки данных, аутентификация пользователей и множество других функций.

Более подробно с библиотекой можно познакомиться на официальном сайте библиотеки.