将Swagger 0.3.x与Django和Rest Framework集成

时间:2018-04-24 08:11:49

标签: django django-rest-framework swagger

处理运行Django 1.6的相当旧的项目时,需要集成Swagger来描述REST端点。

我已经安装了Django Rest Framework(3.2.5)和Django Rest Swagger(0.3.0)的兼容版本,然后将其导入INSTALLED APPS并包含DRF-Swagger's个网址我的网址方案:

...    
url(r'^api/v1/$', include('rest_framework_swagger.urls')),
...

enter image description here 当我转到这个URL时,我看到Swagger正在工作,但是我无法理解接下来应该做什么才能使它与我的端点一起工作并显示有关它们的信息?我应该向SWAGGER_SETTINGS添加一些内容,以便能够从方法中读取YAML插入内容吗?

1 个答案:

答案 0 :(得分:0)

配置此版本swagger以使用DRF的最快方法是首先安装与Django 1.6兼容的两个软件包:

pip install djangorestframework==3.2.5
pip install django-rest-swagger==0.3.0

然后您应该在project settings中添加两个已安装的应用:

INSTALLED_APPS = (
...
'rest_framework',
'rest_framework_swagger',
)

您可以选择将SWAGGER_SETTINGS添加到project settings,但这不是必需的,此处是指向SWAGGER_SETTINGS的链接。

然后你应该将这个模式添加到你的网址:

url(r'^docs/', include('rest_framework_swagger.urls'))

您可以扩展现有路径,例如:

url(r'^<your root path>/docs/', include('rest_framework_swagger.urls'))

但关键是此网址应以docs/结尾才能访问swagger。此时,如果一切都正确完成,您应该能够访问Swagger:

<your root path>/docs/

您需要做的最后一件事是使用api_view装饰器导入并装饰您的端点View

from rest_framework.decorators import api_view
...

@api_view(["GET"]) 
def my_api_view(request, parameter_a, parameter_b):
"""
Endpoint returns list of open orders
---
parameters:
    - name: parameter_a
      description: Description for parameter a
      required: true
      paramType: path
    - name: parameter_b
      description: Description for parameter b
      required: true
      paramType: path
"""

...rest of View...

这将告诉Swagger此端点与DRF相关,并且说明显示在<your root path>/docs/