为什么 swagger-UI 不显示参数和响应?
why swagger-UI doesn't show prameters and response?
我正在使用 django 和 djangorestframwork 以及 drf-yasg。
我在 view.py
模块中有这个 api:
@api_view(http_method_names=["GET"])
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)
在 url.py
模块中我有:
urlpatterns = [
path("referral-code/get-all", views.get_all__referralCodes_game),
]
我需要在查询参数中包含 gameId
,但在那里看不到。
drf-yasg 不知道您的 gameId
查询参数。您需要以某种方式告诉它有关参数的信息。
query
Parameters
- i.e. parameters specified in the URL as /path/?query1=value&query2=value
- are generated from your view’s filter_backends
and paginator
, if any are declared. Additional parameters can be specified via the query_serializer
and manual_parameters
arguments of @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):
对于响应,您可以定义一个序列化程序(推荐)并将其设置为 class 的 serializer_class
,或者您可以向 [=26] 添加一个 responses
值=] 装饰器(有关示例,请参阅文档)。
我正在使用 django 和 djangorestframwork 以及 drf-yasg。
我在 view.py
模块中有这个 api:
@api_view(http_method_names=["GET"])
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)
在 url.py
模块中我有:
urlpatterns = [
path("referral-code/get-all", views.get_all__referralCodes_game),
]
我需要在查询参数中包含 gameId
,但在那里看不到。
drf-yasg 不知道您的 gameId
查询参数。您需要以某种方式告诉它有关参数的信息。
query
Parameters
- i.e. parameters specified in the URL as/path/?query1=value&query2=value
- are generated from your view’sfilter_backends
andpaginator
, if any are declared. Additional parameters can be specified via thequery_serializer
andmanual_parameters
arguments of@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):
对于响应,您可以定义一个序列化程序(推荐)并将其设置为 class 的 serializer_class
,或者您可以向 [=26] 添加一个 responses
值=] 装饰器(有关示例,请参阅文档)。