Django Rest Swagger生成api文檔

關(guān)于swagger

Swagger能成為最受歡迎的REST APIs文檔生成工具之一怀伦,有以下幾個(gè)原因:

  • Swagger 可以生成一個(gè)具有互動(dòng)性的API控制臺(tái),開發(fā)者可以用來快速學(xué)習(xí)和嘗試API复唤。
  • Swagger 可以生成客戶端SDK代碼用于各種不同的平臺(tái)上的實(shí)現(xiàn)盈匾。
  • Swagger 文件可以在許多不同的平臺(tái)上從代碼注釋中自動(dòng)生成。
  • Swagger 有一個(gè)強(qiáng)大的社區(qū),里面有許多強(qiáng)悍的貢獻(xiàn)者吴趴。

下面就實(shí)戰(zhàn)django rest swagger為drf生成api接口文檔

環(huán)境

  • Python3.6
  • Django1.11
  • django-rest-swagger
  • djangorestframework

安裝

pip install django==1.11.6
pip instal djangorestframework
pip install django-rest-swagger

創(chuàng)建項(xiàng)目和app

startproject apitest
startapp api

配置 rest_api/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 加入以下
    'api',
    'rest_framework',
    'rest_framework_swagger',

]
# swagger 配置項(xiàng)
SWAGGER_SETTINGS = {
    # 基礎(chǔ)樣式
    '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,
}


配置api/serializer.py

# 序列化
from django.contrib.auth.models import User,Group
from  rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = "__all__"
class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model =Group
        fields = "__all__"

配置api/views.py

# 視圖
from  django.contrib.auth.models import User,Group
from rest_framework import viewsets
from  api.serializers import UserSerializer,GroupSerializer

# Create your views here.

class UserViewSet(viewsets.ModelViewSet):
    '''查看,編輯用戶的界面'''
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    '''查看侮攀,編輯組的界面'''
    queryset = Group
    serializer_class = GroupSerializer

配置apitest/urls.py

from django.conf.urls import url,include
from django.contrib import admin
from  rest_framework import routers
from  api import views

# 路由
router = routers.DefaultRouter()
router.register(r'users',views.UserViewSet,base_name='user')
router.register(r'groups',views.GroupViewSet,base_name='group')


# 重要的是如下三行
from rest_framework.schemas import get_schema_view
from rest_framework_swagger.renderers import SwaggerUIRenderer, OpenAPIRenderer
schema_view = get_schema_view(title='Users API', renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer])



urlpatterns = [
    # swagger接口文檔路由
    url(r'^docs/', schema_view, name="docs"),
    url(r'^admin/', admin.site.urls),
    url(r'^',include(router.urls)),
    # drf登錄
    url(r'^api-auth/',include('rest_framework.urls',namespace='rest_framework'))

]

最終效果

drf自帶的接口UI
drf.png
swagger UI
swagger ui.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锣枝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子兰英,更是在濱河造成了極大的恐慌撇叁,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畦贸,死亡現(xiàn)場(chǎng)離奇詭異陨闹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)薄坏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門趋厉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胶坠,你說我怎么就攤上這事君账。” “怎么了沈善?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵乡数,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我闻牡,道長(zhǎng)净赴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任罩润,我火速辦了婚禮玖翅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己烧栋,他們只是感情好写妥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著审姓,像睡著了一般珍特。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魔吐,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天扎筒,我揣著相機(jī)與錄音,去河邊找鬼酬姆。 笑死嗜桌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辞色。 我是一名探鬼主播骨宠,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼相满!你這毒婦竟也來了层亿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤立美,失蹤者是張志新(化名)和其女友劉穎匿又,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體建蹄,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡碌更,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洞慎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痛单。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖劲腿,靈堂內(nèi)的尸體忽然破棺而出桦他,到底是詐尸還是另有隱情,我是刑警寧澤谆棱,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站圆仔,受9級(jí)特大地震影響垃瞧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坪郭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一个从、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦嗦锐、人聲如沸嫌松。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萎羔。三九已至,卻和暖如春碳默,著一層夾襖步出監(jiān)牢的瞬間贾陷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國打工嘱根, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留髓废,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓该抒,卻偏偏與公主長(zhǎng)得像慌洪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凑保,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 時(shí)鐘滴答滴答的走 河流嘩啦嘩啦的流 時(shí)光一分一秒的流逝 萬事萬物都堅(jiān)守在自己的崗位 親愛的你啊冈爹,你在做什么呢?
    簡(jiǎn)心ry閱讀 170評(píng)論 0 0
  • 【祈陽式】 站在墊子的中央;雙手合十于胸前,大拇指輕觸胸口,其余四指并攏朝向斜上方; 1.吸氣:雙手經(jīng)眉心向上合十...
    島的深夜閱讀 554評(píng)論 0 0
  • 當(dāng)AtomicInteger的值為最大值2147483647時(shí)愉适,執(zhí)行incrementAndGet()會(huì)發(fā)生什么犯助?...
    不將就51y閱讀 6,402評(píng)論 1 0
  • 一,謝謝你维咸,angel老師剂买,是你教會(huì)了我如何做事情要細(xì)致,并做到完美癌蓖! 二瞬哼,謝謝你,angel老師租副,感恩你的善良和...
    一個(gè)修行的人閱讀 313評(píng)論 0 0