es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué Swagger-UI no muestra los parámetros y la respuesta?

Soy un traductor de español que traduce documentos de tecnología. Traduzco lo siguiente al español. No traduzcas el código y la salida en formato markdown

enter image description here

Estoy usando Django y Django Rest Framework y drf-yasg.
Tengo esta API en el módulo view.py:

@api_view(http_method_names=["GET"])
def get_all_referralCodes_game(request):

<pre><code>data = request.query_params
query = GameCollection.find_one(
    {"_id": ObjectId(data["gameId"]),},
    {"_id": 0,"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)
</code></pre>

<code>
y en el módulo **`url.py`** tengo:
</code>
urlpatterns = [
    path("referral-code/get-all", views.get_all_referralCodes_game),
]

Necesito tener gameId en los parámetros de consulta pero no se puede ver allí.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para que el parámetro gameId sea visible en los parámetros de la consulta, debes agregarlo a la URL en el módulo url.py. Puedes modificar tu patrón de URL de esta manera:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path("referral-code/get-all/<str:gameid>/", views.get_all__referralCodes_game),
    ]
    

    Luego, en tu módulo view.py, puedes modificar la definición de la función de esta manera:

    @api_view(http_method_names=["GET"])
    def get_all__referralCodes_game(request, gameId):
    
        query = GameCollection.find_one(
            {"_id": ObjectId(gameId)},
            {"_id": 0, "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)
    

    Ahora, deberías poder acceder al parámetro gameId en los parámetros de tu consulta agregándolo al final de la URL, así:

    /referral-code/get-all/<gameid>/
    

    Nota: No olvides importar ObjectId y Response de django.http en tu módulo view.py, y la clase GameCollection desde donde la hayas definido.

Comments are closed.