Django RESTful项目中使用Swagger文档生成器
什么是Swagger
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。
作用
- 接口文档在线自动生成
- 功能测试
Swagger优势
- Swagger可生成一个具有互动性的API控制台,开发者可快速学习和尝试API
- Swagger可生成客户端SDK代码,用于不同平台上(Java、Python...)的实现
- Swagger文件可在许多不同的平台上从代码注释中自动生成
- Swagger有一个强大的社区,里面有许多强悍的贡献者
在Djangorestful项目中使用swagger
安装
pip install django-rest-swagger
添加到 Django 设置中。'rest_framework_swagger'INSTALLED_APPS
settings.py
INSTALLED_APPS = [
...
'rest_framework_swagger',
...
]
urls.py添加路由
from django.conf.urls import url
from rest_framework_swagger.views import get_swagger_view
schema_view = get_swagger_view(title='Pastebin API')
urlpatterns = [
url(r'^$', schema_view)
]
在浏览器中查看
在settings.py添加额外配置项
# swagger 配置项
SWAGGER_SETTINGS = {
# 基础样式
'SECURITY_DEFINITIONS': {
"basic":{
'type': 'basic'
}
},
# 如果需要登录才能够查看接口文档, 登录的链接使用restframework自带的.
'LOGIN_URL': 'rest_framework:login',
'LOGOUT_URL': 'rest_framework:logout',
# 'DOC_EXPANSION': None,
# 'SHOW_REQUEST_HEADERS':True,
# 'USE_SESSION_AUTH': True,
# 'DOC_EXPANSION': 'list',
# 接口文档中方法列表以首字母升序排列
'APIS_SORTER': 'alpha',
# 如果支持json提交, 则接口文档中包含json输入框
'JSON_EDITOR': True,
# 方法列表字母排序
'OPERATIONS_SORTER': 'alpha',
'VALIDATOR_URL': None,
}
高级部分
Django REST Swagger 包含两个渲染器OpenAPIRenderer和SwaggerUIRenderer。OpenAPIRenderer负责生成 JSON 规范,SwaggerUIRenderer负责UI呈现,即HTML/JS/CSS。要呈现 UI,必须包含两个渲染器。
Swagger模版定制模板
通过覆盖路径site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html文件部分代码即可实现页面定制。
可以自定义区域:
● {% block extra_styles %}添加其他样式表
● {% block extra_scripts %}添加其他脚本。
● {% block user_context_message %}自定义“你好,用户”消息(仅限 Django 会话)
● {% block extra_nav %}导航栏中其他内容的占位符。
● {% block logo %}导航栏的徽标区域。
出现报错信息:'staticfiles' is not a registered tag library。这是因为在django4.x中关于 {% load staticfiles %} 部分做了修改 ,
解决方法是使用新语法:{% load static %}
找到报错的文件位置:site-packages/rest_framework_swagger/templates/rest_framework_swagger/index.html
用编辑器,将第二行的{% load staticfiles %} 修改为:{% load static %}
刷新显示正确