drf-yasg Как показать образец ответа с помощью api?

#django #django-rest-framework #openapi #drf-yasg

#django #django-rest-framework #openapi #drf-yasg

Вопрос:

Как я могу добавить примеры ответов — (документ openapi) в мой документ swagger, используя пакет drf-yasg?

Ответ №1:

Используйте drf_yasg.openapi.Response —(drf-yasg doc) с помощью @swagger_auto_schema(...) —(drf-yasg doc) декоратора как

 from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
from rest_framework.response import Response
from rest_framework.views import APIView

response_schema_dict = {
    "200": openapi.Response(
        description="custom 200 description",
        examples={
            "application/json": {
                "200_key1": "200_value_1",
                "200_key2": "200_value_2",
            }
        }
    ),
    "205": openapi.Response(
        description="custom 205 description",
        examples={
            "application/json": {
                "205_key1": "205_value_1",
                "205_key2": "205_value_2",
            }
        }
    ),
}


class MyTestAPIView(APIView):

    @swagger_auto_schema(responses=response_schema_dict)
    def post(self, request, *args, **kwargs):
        return Response({"foo": "bar"})  

Результат отображения схемы

Результат отображения схемы

Обновить

он продолжает загружаться и ничего не показывает

Возможно, вам потребуется нажать на текст «Примерное значение», если вы ищете в документе Swagger

загрузочный счетчик

Комментарии:

1. Итак, я должен написать пользовательский ответ для каждого API? У меня 22 API. итак, для всех из них?

2. Да, если только какой-либо из них не возвращает тот же ответ.

3. Сэр, не могли бы вы рассказать, как я могу добавить в него параметр post? Я не могу отправить параметр post

4. Это «еще один вопрос» , пожалуйста, задайте новый вопрос относительно новой проблемы. Кстати, пожалуйста, примите и поддержите ответ, если вы нашли этот ответ полезным.

5. Я ожидал нового вопроса со ссылочной ссылкой @DivyaKonda

Ответ №2:

В ответ на ответ @JPG для этого есть быстрое решение. Перейдите в настройки и добавьте это.

 SWAGGER_SETTINGS = {
    "DEFAULT_MODEL_RENDERING": "example"
}
  

Сначала будет показан пример.