Drf_yasg: Невозможно сгенерировать пользовательский интерфейс Swagger из файла YAML
Я использую библиотеку drf_yasg в моем Django REST Framework проекте для генерации Swagger документации. Я определил конечные точки и схемы API в файле YAML, но когда я пытаюсь сгенерировать Swagger UI, он отображается некорректно. Он отрисовывает UI с помощью автообнаружения, в котором нет информации о функциях, но я хочу добавить в него больше информации.
Некоторые ключевые детали:
- Я установил
drf_yasg
и добавил его в Django INSTALLED_APPS .
- Я определил конечные точки и схемы API в
swagger.yaml
файле .
- В конфигурации Django URL я добавил
get_schema_view()
изdrf_yasg
для генерации схемы .
Это мой проект urls.py
from django.contrib import admin
from django.urls import path, include
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
from rest_framework import permissions
schema_view = get_schema_view(
openapi.Info(
title="My Application",
default_version="v1",
description="A sample API for learning DRF",
terms_of_service="https://www.google.com/policies/terms/",
contact=openapi.Contact(email="hello@example.com"),
license=openapi.License(name="BSD License"),
),
public=True,
permission_classes=(permissions.AllowAny,),
)
urlpatterns = [
path('admin/', admin.site.urls),
path('swagger/', schema_view.with_ui(
'swagger', cache_timeout=0), name='schema-swagger-ui'),
path('redoc/', schema_view.with_ui(
'redoc', cache_timeout=0), name='schema-redoc'),
]
вот как выглядит моя функция:
@api_view(['POST'])
def searchData(request):
name = request.data.get('name')
vendor = request.data.get('vendor')
s = AppSearch()
result = s.search(name, vendor)
result = json.loads(json_util.dumps(result))
return Response(result, status=status.HTTP_200_OK)
По умолчанию Swagger показывает мне функцию и отображает возвращаемый тип, но не отображает детали запроса, такие как name
и vendor
. Чтобы решить эту проблему, я реализовал эти детали в файле schema.yml
, который находится в корневом каталоге моего проекта (там же, где и manage.py
).