在我們接口開發完之后,需要交付給別人對接,在沒有使用swagger的時候,我們需要單獨編寫一份api接口文檔,由postman之類的工具進行請求得到返回的結果。而有了swagger之后,可以通過提取接口代碼中的注釋來生成文檔,並且可以直接在瀏覽器中調用,獲取返回結果。先看下效果
安裝
pip install django-rest-swagger
setting.py
文件中添加
INSTALLED_APPS = [
...
'rest_framework_swagger',
...
]
配置
在settings.py中可以添加修改swagger相關的配置
SWAGGER_SETTINGS = {
# 這里可以用獲取到的token來登錄
'SECURITY_DEFINITIONS': {
'api_key':{
'type': 'apiKey',
'in':'query', # token位置在url中
'name':'token' # 驗權的字段
}
},
'USE_SESSION_AUTH': False,
'JSON_EDITOR': False, # False,用戶可以自己編輯格式,不用按照serializers中的數據添加。True,會有多個輸入框,輸入serializer對應的字段的值
}
urls.py
中添加一下代碼
from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
schema_view = get_schema_view(title=‘API', renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer])
urlpatterns = [
...
path('docs/', schema_view, name='docs'), # 線上環境中,最好去掉
]
運行服務,訪問docs/
便可以發現生成的文檔。
NOTE
- 注釋支持markdown語法,可以方便的調整格式了
- 改完代碼,順便修改注釋就可以更新文檔了
docs/
會有權限的判斷,所以訪問所有接口,最好給所有的權限- 表單等的字段和view(action)對應的serializers相關