기존 view에서 APIView를 상속받아 사용했고 extend_schema 데코레이터에서 OpenApiExample를 사용했다. swagger를 확인하면 예시가 잘 나왔다. RetrieveAPIView를 상속받도록 변경하고 swagger를 확인했는데 예시가 사라져있었다. 반환할 때 JsonResponse가 아닌 Response 때문인가라고 생각했지만 원인은 get 메서드를 사용하지 않고 retrieve를 사용했기 때문이다. 다시 get으로 바꿔줘야한다. ListAPIView를 사용할 때도 마찬가지로 get을 사용하면 된다.
extend_schema
parameters=[
OpenApiParameter(
name="id",
type=int,
location=OpenApiParameter.PATH,
required=True,
examples=[
OpenApiExample(
name="",
description="",
value="30000",
),
],
)
],
ListAPIView를 상속해서 사용할 때 list 대신 get을 써도 어차피 list가 호출된다. RetrieveAPIView도 get을 호출해도 부모(RetrieveModelMixin)의 retrieve가 호출된다.
class ListAPIView(mixins.ListModelMixin,
GenericAPIView):
"""
Concrete view for listing a queryset.
"""
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
class RetrieveAPIView(mixins.RetrieveModelMixin,
GenericAPIView):
"""
Concrete view for retrieving a model instance.
"""
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args, **kwargs)