Joh*_*ohn 8 django swagger django-rest-framework
我制作了一个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)
Run Code Online (Sandbox Code Playgroud)
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')),
]
Run Code Online (Sandbox Code Playgroud)
我想得到Swagger的所有参数,我没有得到.
我在用:
Django的休息,招摇== 2.1.1
djangorestframework == 3.5.3
考虑使用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)
Run Code Online (Sandbox Code Playgroud)
该get_swagger_view()方法无法控制您向应用程序中的网址添加参数和说明
解决方案是使用显式架构定义。您可以创建一个文档,该文档代表Core API模式容器。通过以下链接。阅读核心API部分
这将需要您为应用程序中使用的URL和参数创建模式。
创建一个文件
swagger.py
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)
Run Code Online (Sandbox Code Playgroud)
有关说明coreapi.Document,coreapi.Field,coreapi.Link敬请参见上述链接。
为swagger文档创建URL:
urls.py
url('^docs', swagger.schema_view)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3761 次 |
| 最近记录: |