swagger是後臺開發中很好用的交互式文檔,Django本來的Django-Swagger已經中止維護了,如今通常用drf_yasg
這個包來實現文檔,它裏面支持swagger和redoc兩種,redoc是靜態的,做爲導出文檔的話不錯,不過通常咱們用swagger,由於能夠在文檔裏面調試,很是方便。java
Drf裏面有個東西是AutoSchema,能夠自動掃描ViewSet和APIView這類能夠提供接口的地方,和Spring裏面基於註解的文檔定義不一樣,通常在Drf裏不須要手動配置每一個接口的名稱和說明,只要寫在pydoc裏面就行,不過這個AutoSchema也不是很準確,他是按照URL,特別是咱們這種多級URL的,就會只按照第一級URL分組,因此就會出現下面這種未分組的效果。python
定義一個類,繼承自SwaggerAutoSchema
,用於自定義配置tags,咱們本身決定要用哪一級的URL來作分組tag。linux
建立文件,本例是:config/swagger.py
android
from drf_yasg.inspectors import SwaggerAutoSchema class CustomSwaggerAutoSchema(SwaggerAutoSchema): def get_tags(self, operation_keys=None): tags = super().get_tags(operation_keys) if "v1" in tags and operation_keys: # `operation_keys` 內容像這樣 ['v1', 'prize_join_log', 'create'] tags[0] = operation_keys[1] return tags
而後咱們在settings
裏面配置一下:git
# Swagger 配置 SWAGGER_SETTINGS = { 'DEFAULT_AUTO_SCHEMA_CLASS': 'config.swagger.CustomSwaggerAutoSchema', }
這樣就能夠了~github
我整理了一系列的技術文章和資料,在公衆號「程序設計實驗室」後臺回覆 linux、flutter、c#、netcore、android、kotlin、java、python 等可獲取相關技術文章和資料,同時有任何問題均可以在公衆號後臺留言~c#