Issue
Trying to send data using swagger but POST method is not showing any data input option to send data. why?
here are my views :
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status
from .models import Blog
from .serializer import BlogSerializer
@api_view(['GET'])
def get_blogs(request):
blogs = Blog.objects.all()
serializer = BlogSerializer(blogs, many=True)
return Response({
'Blogs':serializer.data
}, status.HTTP_200_OK)
@api_view(['POST'])
def create_blog(request):
data = request.data
serializer = BlogSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response({
'data':serializer.data
}, status.HTTP_201_CREATED)
return Response(serializer.errors)
Here are my urls :
schema_view = get_schema_view(
openapi.Info(
title="Blog API",
default_version='v1',
description="Test description",
),
public=True,
permission_classes=(permissions.AllowAny,),
)
urlpatterns = [
path("admin/", admin.site.urls),
path("api/", include('app.urls')),
path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
]
How to send data through post method in swagger?
How to send input data through post method.
Solution
import swagger_auto_schema from drf_yasg.utils
user that decorator to give serializer.
from rest_framework.response import Response
from rest_framework.decorators import api_view
from rest_framework import status
from .models import Blog
from .serializer import BlogSerializer
from drf_yasg.utils import swagger_auto_schema
@api_view(['GET'])
def get_blogs(request):
blogs = Blog.objects.all()
serializer = BlogSerializer(blogs, many=True)
return Response({
'Blogs':serializer.data
}, status.HTTP_200_OK)
@swagger_auto_schema(method='POST', request_body=BlogSerializer)
@api_view(['POST'])
def create_blog(request):
data = request.data
serializer = BlogSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response({
'data':serializer.data
}, status.HTTP_201_CREATED)
return Response(serializer.errors)
Answered By - Rohit Gajula
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.