【问题标题】:Integrate Swagger 0.3.x with Django and Rest Framework将 Swagger 0.3.x 与 Django 和 Rest 框架集成
【发布时间】:2018-04-26 00:26:26
【问题描述】:

在运行 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')),
...

当我转到此 URL 时,我看到 Swagger 正在工作,但我不明白接下来我应该怎么做才能使它与我的端点一起工作并显示有关它们的信息?我应该向SWAGGER_SETTINGS 添加一些内容以便能够从方法中读取YAML 插入吗?

【问题讨论】:

  • 打开浏览器控制台,你可能会遇到一些错误。
  • @JibinMathews ,你说得对,它说“无法从localhost:8000/api/v1/api-docs 读取 swagger JSON”,但我不明白我应该在哪里为这个特定端点或所有这些端点放置 swagger 描述.我已经阅读了它在 Django-Swagger v2.0 中是如何完成的,但它与 0.3.x 中的不同
  • 你能更新url如下 url(r'^docs/', include('rest_framework_swagger.urls')),
  • @JibinMathews 我不再收到错误,控制台显示“Loaded SwaggerUI”,我接下来要做什么?
  • 1.6 自 2015 年 4 月起不受支持,并且未收到安全修复程序。可怕!

标签: django django-rest-framework swagger


【解决方案1】:

将此版本的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'))

但关键是这个 url 应该以 docs/ 结尾才能访问 swagger。此时,如果一切都正确完成,您应该可以在以下位置访问 Swagger:

&lt;your root path&gt;/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 相关,并且有描述显示在&lt;your root path&gt;/docs/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 2022-08-05
    • 1970-01-01
    • 2018-10-17
    • 2016-08-10
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多