drf-Spectrum не работает при использовании управления версиями (в спецификации не определены операции!)
Несколько недель назад я установил. Все работало правильно, пока я не включил управление версиями в DRF (Django Rest Framework).
Я реализовал, и он работал правильно. Но потом я понял, что Swagger не показывает конечные точки в / docs /, и было показано это сообщение: «Никакие операции не определены в спецификации!» .
Если я прокомментирую
DEFAULT_VERSIONING_CLASS
линия в
REST_FRAMEWORK
настройки, все конечные точки правильно отображаются на странице документации Swagger (/ docs /). Однако это нарушает мою версию:
request.version = None
.
Я тестировал как с
URLPathVersioning
а также
NamespaceVersioning
. Тот же результат для всех.
Я читал это
AcceptHeaderVersioning
был реализован год назад. Ссылка на коммит здесь .
Но еще читал, что планировалось поменять
modify_for_versioning
функция, и это может повлиять на управление версиями заголовков. Ссылка на функцию в модуле сантехника, здесь и разговор здесь . Фактически, за последний год в модуль было внесено много изменений, проверьте здесь .
Это мои настройки DRF:
REST_FRAMEWORK = {
# Auth
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.TokenAuthentication',
],
# Swagger/docs
'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
# Pagination
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 5,
# Testing
'TEST_REQUEST_DEFAULT_FORMAT': 'json',
# Versioning
# https://www.django-rest-framework.org/api-guide/versioning/#configuring-the-versioning-scheme
'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.AcceptHeaderVersioning',
'DEFAULT_VERSION': None,
'ALLOWED_VERSIONS': None,
'VERSION_PARAM': 'version',
}
Вопрос
- Есть идеи, что я делаю неправильно? Любые рекомендации по совместной работе (управление версиями и чванство)? Какие-либо предложения?
- И кстати (это второстепенный, а не главный вопрос): можно ли запустить
drf-spectacular
тесты в мой собственный проект?
Заранее спасибо!
1 ответ
Вопрос 1: Управление версиями работает нормально. Это частая ошибка. Когда используется версия
AcceptHeaderVersioning
(с помощью
DEFAULT_VERSIONING_CLASS
), запрос, извлекающий схему из
SpectacularAPIView
вероятно, не содержит заголовок версии, и поэтому вы получаете только неверсированные конечные точки (в вашем случае их нет).
Либо явно запросите схему с управлением версиями с помощью
/api/schema?version=v2
или установите версию вручную с помощью
path('api/schema/', SpectacularAPIView.as_view(api_version='v2'), name='schema'),
Где происходит волшебство и в каком порядке используются версии.
Вопрос 2 : Колеса python не включают тесты. Для этого вам нужно будет установить исходный пакет: https://pypi.org/project/drf-spectacular/#files