注:本篇文章基於Django-rest-swagger 2.0.7環境下撰寫python
參考英文文檔:django
http://django-rest-swagger.readthedocs.io/en/latest/api
本文是使用swagger工具結合Django-rest-framework進行restful API的管理以及可視化顯示,結合今天開發的經驗進行記錄安全
1.下載:restful
pip install django-rest-swagger
2.快速搭建:python2.7
1)在Django的settings.py中:工具
INSTALLED_APPS = [ ... 'rest_framework_swagger', ... ]
2)在urls.py中:post
from rest_framework_swagger.views import get_swagger_view schema_view = get_swagger_view(title='Pastebin API') #其中title='Pastebin API'爲改rest api顯示集合的名字(可自定義) urlpatterns = [ …… url(r'^$', schema_view) …… ]
3)如今開始在settings.py中設置swagger顯示的內容以及顯示的格式:url
在settings.py中新建一個配置字典,取名SWAGGER_SETTINGS:spa
SWAGGER_SETTINGS = { 'SECURITY_DEFINITIONS':{ 'basic':{ 'type':'basic' } } }
下面對能夠添加到該配置項中的內容進行解釋:
缺省值:True
注:這個login/logout按鈕是依賴着settings裏面的 LOGIN_URL 和 LOGOUT_URL,他們可以在SWAGGER_SETTINGS 或者 Django settings中進行配置。
urls.py:
urlpatterns = [ url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) ]
settings.py:
LOGIN_URL = 'rest_framework:login' LOGOUT_URL = 'rest_framework:logout'
缺省值:django.conf.settings.LOGIN_URL
缺省值:django.conf.setttings.LOGOUT_URL
缺省值:
{ 'basic': { 'type': 'basic' } }
接下來就是一些最基本的配置了,對於SwaggerUI:
默認值:None
可選參數:
None:全部api操做都摺疊起來
'list': 列出全部的操做(僅僅是操做列表,無具體信息)
'full': 解釋全部的操做(列出操做列表全部的具體信息,所有攤開來)
默認值:None
默認值:False
可選參數:
alpah:按字母排序
method:按HTTP方法排序
默認值:None
默認值:False
默認值:['get', 'post', 'put', 'delete', 'patch']
默認值:https://online.swagger.io/validator/
3.遇到的問題:
1)在設置好遇到了一個問題,就是會在下方提示有一個錯誤,錯誤爲:schemaValidationMessages":[{"level":"error","message":"Can't read from file http://127.0.0.1:8000/swagger/swagger"}]`
解決辦法:
vi /usr/local/lib/python2.7/dist-packages/rest_framework_swagger/static/rest_framework_swagger/init.js
將其修改成以下所示:
var settings = { url: window.location.pathname + '?format=openapi', validatorUrl: undefined, # 添加此行 ……