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) |
В библиотеке присутствуют возможности пред- и постобработки данных, аутентификация пользователей и множество других функций.
Более подробно с библиотекой можно познакомиться на официальном сайте библиотеки.