Почему swagger-UI не показывает праметры и ответы?

enter image description here

я использую django и django-rest-framwork и drf-yasg

один из api в view.py

@api_view(http_method_names=["GET"])  # Done
def get_all__referralCodes_game(request):

    data = request.query_params
    query = GameCollection.find_one(
        {"_id": ObjectId(data["gameId"]),
         },
        {"_id": 0,
         f"referralCodes": 1,
         }
    )
    if query:
        return Response(data={"msg": "ok", "data": [query["referralCodes"]]}, status=http.HTTPStatus.OK)
    return Response(data={"msg": "not_found", "data": {}}, status=http.HTTPStatus.NOT_FOUND)

and in url.py

urlpatterns = [
    path("referral-code/get-all", views.get_all__referralCodes_game),
]

мне нужен gameId в query_params, но его можно увидеть там

drf-yasg не знает о вашем параметре запроса gameId. Вам нужно как-то сообщить ему о параметре.

Согласно документации drf-yasg:

query Parameters - т.е. параметры, указанные в URL как /path/?query1=value&query2=value - генерируются из filter_backends и paginator вашего представления, если таковые объявлены. Дополнительные параметры могут быть указаны через аргументы query_serializer и manual_parameters в @swagger_auto_schema.

Вы можете использовать @swagger_auto_schema следующим образом:

@swagger_auto_schema(
        method='get',
        manual_parameters=[
            openapi.Parameter(
                'gameId',
                openapi.IN_QUERY,
                description='Game ID',
                required=True,
                type=openapi.TYPE_INTEGER,
            ),
         ]
)
def get_all__referralCodes_game(request):

Для ответа вы можете либо определить сериализатор (рекомендуется) и установить его в качестве serializer_class класса, либо добавить responses значение к декоратору @swagger_auto_schema (примеры см. в документации).

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