向django rest swagger的数据注入一个swagger样式的yaml数据
django-rest-swagger-swaggerdoc的Python项目详细描述
django rest swagger 2.0已经发生了翻天覆地的变化。例如,不能在YAML文件中放置返回代码。 这个包提供了向django rest swagger的数据注入swagger样式的yaml数据的功能。
如何使用
在已安装的应用程序设置中添加rest_framework掴u swagger
设置.py:
INSTALLED_APPS = ( ... 'rest_framework_swagger', )
创建一个夸张风格的yaml文件
这个yaml文件风格夸张。
/api_test_doc.yml:
get: description: test document responses: 200: description: success 400: description: bad request schema: type: json headers: Content-Type: application/json
创建API视图函数或视图类。
用于指定文件的相对路径的swaggerdoc修饰符 定义了视图可调用。
视图.py:
from rest_framework.decorators import api_view from rest_framework.views import APIView from django_rest_swagger_swaggerdoc import swaggerdoc @swaggerdoc('api_test_doc.yml') @api_view() def example_view(request): pass class ExampleView(APIView): @swaggerdoc('./api_test_doc.yml') def get(self, request): pass
创建文档架构视图。
使用django_rest_swagger_swaggerdoc.renders.SwaggerAdditinalDocRenderer。 不要使用rest_framework_swagger.renderers.openapirenderer。
视图.py:
from rest_framework_swagger.renderers import SwaggerUIRenderer from rest_framework.decorators import api_view, renderer_classes from rest_framework import response, schemas from django_rest_swagger_swaggerdoc.renderers import SwaggerAdditinalDocRenderer @api_view() @renderer_classes([SwaggerUIRenderer, SwaggerAdditinalDocRenderer]) def schema_view(request): generator = schemas.SchemaGenerator(title='Pastebin API') return response.Response(generator.get_schema(request=request))
参见示例项目:https://github.com/TakesxiSximada/django-rest-swagger-swaggerdoc/tree/master/examples
安装
$ pip install django-rest-swagger-swaggerdoc
这取决于djangorestframework(>;=3.4.7)。 如果版本早于3.7.4,则可能无法正确解析yaml路径。