#django #swagger #drf-spectacular #exclude
Вопрос:
У нас есть куча api с разными версиями в urls.py, например
- api/v1
- api/v2
- api/v3
. Мы хотим реализовать swagger с помощью drf-spectacular, но мы хотим предоставить только конечные точки api/v3.
Есть ли способ сделать это? Я не могу разобраться в документации.
Спасибо
Комментарии:
1. кажется, в drf-yasg есть способ с помощью «шаблонов» get_schema_view. Я не думаю, что это переведено на drf-впечатляюще.
Ответ №1:
Разобрался с этим. Скопировал пользовательскую функцию крючка предварительной обработки, изменил инструкцию pass, чтобы отфильтровать то, что мне не требовалось в конечных точках, затем сопоставил расположение файла и функции в моих настройках для предварительно обработанных крючков.
Ответ №2:
Это работает для меня:
def preprocessing_filter_spec(endpoints):
filtered = []
for (path, path_regex, method, callback) in endpoints:
# Remove all but DRF API endpoints
if path.startswith("/api/"):
filtered.append((path, path_regex, method, callback))
return filtered
В настройках:
"PREPROCESSING_HOOKS": ["common.openapi.preprocessing_filter_spec"],