Установка
Используя pip
pip install drf-schema-adapter
Из исходного кода
Из каталога исходного кода:
python setup.py install
Основное использование
Автоматические конечные точки
Благодаря drf_auto_endpoint
, DRF-schema-adapter помогает Вам зарегистирировать конечные точки так же легко, как зарегистрировать базовые классы admin
Сначала, для регистрации конечных точек вам необходимо импортировать роутер drf_auto_endpoint
а так же модели, которые вы хотите зарегистировать в вашем urls.py
## urls.py
from drf_auto_endpoint.router import router
from my_app.models import MyModel, OtherModel
router.register(MyModel)
router.register(OtherModel, url='my_custom_url')
urlpatterns = [
url(r'^api/', include(router.urls)),
]
Если же вы не хотите импортировать модели напрямую в ваш urls.py
, вы можете воспользоваться возможностью автоматического обнаружения, и добавить регистрации в файл endpoints.py
вашего приложения
## urls.py
from drf_auto_endpoint.router import router
urlpatterns = [
url(r'^api/', include(router.urls)),
]
## my_app/endpoints.py
from drf_auto_endpoint.router import router
from .models import MyModel
router.register(MyModel)
Метаданные
DRF-schema-adapter так же поставляется с классами метаданных и миксинов для использования с Django REST Framework (DRF). Эти классы и миксины предоставляют расширенную информацию о API и полях, при запросе методом OPTIONS
к корню api
Хотя классы метаданных и миксины лучше всего работают с классами Endpoint
DRF-schema-adapter, они так же совместимы с классами DRF (Model)ViewSet
и (Model)Serializer
Для активации расширенных метаданных нужно настроить их в файле settings.py
## settings.py
...
REST_FRAMEWORK = {
...
'DEFAULT_METADATA_CLASS': 'drf_auto_endpoint.metadata.AutoMetadata',
}
Экспорт определений сериализаторов в модели фронтэнда
Одна из основноый сложностей при написании приложениий с бэкэндом и фронтэндом на javascript, это необходимость переопределения по крайней мере некоторых моделей/сериализаторов как на бэкэнде, так и на фронтэнде.
Благодаря приложению DRF-schema-adapter export_app
можно экспортировать эти определения в среду web-фреймворка либо на лету, либо в виде конкретных моделей. Для того, что бы это реализовать, сначала добавьте export_app
в массив INSTALLED_APPS
а так же путь к корню фронтэнда вашего web приложения. В зависимости от структуры какталогов проекта, так же может понадобится указание точного пути, где разделитель точка, к расположению роутера drf_auto_endpoint
## settings.py
INSTALLED_APPS = (
...
'export_app',
)
EXPORTER_FRONT_APPLICATION_PATH = '../front/js/src'
EXPORTER_ROUTER_PATH = 'my_app.my_url_file.router'
После этого, для экспорта моделей необходимо запустить
./manage.py export <endpoint_base_url>
например, ./manage.py export sample/products
Для экспорта этих моделей на лету, нужно определеить имя приложения фронтэнда вместо его пути, а так же добавить новый URL в ваш urls.py
## settings.py
EXPORTER_FRONT_APPLICATION_NAME: 'my-app'
## urls.py
...
from export_app import urls as export_urls, settings as export_settings
...
urlpatterns = [
...
url(r'^models/', include(export_urls, namespace=export_settings.URL_NAMESPACE)),
]
В зависимости от настроек бэкэнда и фронтенда так же может понадобится обновить еще несколько параметров. см. конфинурация export_app
Что бы узнать больше о настройках exporter_app и различных доступных адаптерах, см. раздел адаптеров export_app