为什么 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 查询参数。您需要以某种方式告诉它有关参数的信息。

根据 drf-yasg documentation:

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 值=] 装饰器(有关示例,请参阅文档)。