我制作了一个API并想制作一个swagger doc。我没有为此开发任何序列化。
Views.py
class DeliveryView(APIView):
renderer_classes = (XMLRenderer,)
def get_campaign_vast(self, request, *args):
return response
def get(self, request):
return self.get_campaign_vast(request, data)
def post(self, request):
"""
This text is the description for this API
---
param1 -- A first parameter
param2 -- A second parameter
"""
data = request.data
return self.get_campaign_vast(request, data)
urls.py
from django.conf.urls import url,include
from django.contrib import admin
from rest_framework_swagger.views import get_swagger_view
schema_view = get_swagger_view(title='Add Delivery')
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',schema_view),
url(r'^', include('deliverymanagment.urls')),
]
我想获得Swagger中的所有参数,我没有得到。
i am not able to get parameters
我正在使用:
django的静止-招摇== 2.1.1
djangorestframework == 3.5.3
答案 0 :(得分:6)
请考虑使用GenericAPIView
,因为这会生成文档。当端点与模型无关时,使用它有点麻烦,但确实有效。
作为示例,以下代码将创建一个仅接受发布请求的端点,并使用seralizer在swagger中进行记录。
class SomeThing(GenericAPIView):
serializer_class = MySerializer
def post(self, request, *args, **kwargs):
serializer = MySerializer(data=request.data)
if serializer.is_valid() is False:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
res = do_magic(**serializer.data)
return Response(res)
答案 1 :(得分:5)
\U$1\E
方法无法让您控制将参数和说明添加到应用中的网址
此解决方案是使用显式架构定义。您可以创建一个Document,它表示Core API架构容器。浏览以下链接。阅读核心API部分
这将要求您为URL和应用程序中使用的参数创建架构。
为swagger创建文件
swagger.py
get_swagger_view()
有关from rest_framework.decorators import renderer_classes, api_view
from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer
import coreapi
from rest_framework import response
# noinspection PyArgumentList
@api_view()
@renderer_classes([SwaggerUIRenderer, OpenAPIRenderer])
def schema_view(request):
print("---inside schema view-----")
# noinspection PyArgumentList
schema = coreapi.Document(
title='Your Title',
url='Your host url',
content={
'search': coreapi.Link(
url='/search/',
action='get',
fields=[
coreapi.Field(
name='from',
required=True,
location='query',
description='City name or airport code.'
),
coreapi.Field(
name='to',
required=True,
location='query',
description='City name or airport code.'
),
coreapi.Field(
name='date',
required=True,
location='query',
description='Flight date in "YYYY-MM-DD" format.'
)
],
description='Return flight availability and prices.'
)
}
)
# schema = generator.get_schema(request)
return response.Response(schema)
的解释,coreapi.Document
,coreapi.Field
请参阅上述链接。
为swagger文档创建网址:
urls.py
coreapi.Link