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).

Вернуться на верх