Eve - REST Api для Python и MongoDb

222

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)

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

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

Новые статьи

Установка Webmin для Armbian (Orange Pi / Raspberry Pi)
Установка Webmin для Armbian (Orange Pi / Raspberry Pi)

Установка webmin для операционной системы Armbian (Orange Pi / Raspberry Pi). Install webmin for armbian.

Читать далее...
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML

Простая реализация текстового поля с выпадающими подсказками (аналогично поиску у Яндекс и Google) при вводе текста на языке C# WPF. Реализация пользовательского элемента управления в C#/

Читать далее...
Yii2 advanced доступ из backend к frontend кэшу
Yii2 advanced доступ из backend к frontend кэшу

В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.

Читать далее...
C# паттерн проектирования Одиночка (Singleton)
C# паттерн проектирования Одиночка (Singleton)

Обзор и пример использования шаблона (паттерна) проектирования Одиночка (Singleton) на языке программирования C# (си шарп), достоинства и недостатки паттерна проектирования Синглтон

Читать далее...
Orange Pi / Raspberry Pi - установка и настройка Django в Linux Armbian
Orange Pi / Raspberry Pi - установка и настройка Django в Linux Armbian

Описание процесса установки и настройки python фреймворка django на одноплатных мини компьютерах orange pi / raspberry pi в операционной системе Linux Armbian.

Читать далее...

Это интересно

Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML
Текстовое поле с выпадающими подсказками при вводе текста C# WPF XAML

Простая реализация текстового поля с выпадающими подсказками (аналогично поиску у Яндекс и Google) при вводе текста на языке C# WPF. Реализация пользовательского элемента управления в C#/

Читать далее...
Yii2 advanced доступ из backend к frontend кэшу
Yii2 advanced доступ из backend к frontend кэшу

В заметке описан способ доступа к фронтэнд (frontend) кэшу (cache) advanced приложения из бэкэнда (backend) для php фреймворка Yii2.

Читать далее...
C# паттерн проектирования Одиночка (Singleton)
C# паттерн проектирования Одиночка (Singleton)

Обзор и пример использования шаблона (паттерна) проектирования Одиночка (Singleton) на языке программирования C# (си шарп), достоинства и недостатки паттерна проектирования Синглтон

Читать далее...
Yii2 установка и настройка advanced приложения
Yii2 установка и настройка advanced приложения

Описание процесса установки и настройки advanced приложения php фреймворка Yii2 с использование composer, рассмотрены возможные "подводные камни", возникающие при установке и настройке Yii2 advanced

Читать далее...
Подключение инфракрасного (ИК) пульта к Arduino
Подключение инфракрасного (ИК) пульта к Arduino

Описание процесса подключения инфракрасного дистанционного пульта управления к arduino, пример arduino скетча для работы с инфракрасным дистанционным пультом

Читать далее...