Почему swagger-UI не показывает праметры и ответы?
я использую 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
(примеры см. в документации).