api接口url化

目錄
為接口提供一個(gè)主頁
為序列化類增加url

配置全局分頁

  1. 為接口提供一個(gè)主頁
    目前在瀏覽器中進(jìn)行的測試,我們都是通過輸入完整url來跳轉(zhuǎn)網(wǎng)頁测垛,當(dāng)提供的url變多時(shí)嫉拐,難免會(huì)忘記哪些url是有效的。為了避免這種情況绽诚,我們?yōu)锽rowserAPI提供一個(gè)主頁魄藕,來引導(dǎo)我們測試内列。

為每個(gè)url都增加一個(gè)參數(shù)name。

urlpatterns = [
    url(r'^snippets/$', views.SnippetList.as_view(), name='snippet-list'),
    url(r'^snippets/(?P<pk>[0-9]+)/$', views.SnippetDetail.as_view(), name='snippet-detail'),
    url(r'^users/$', views.UserList.as_view(), name='user-list'),
    url(r'^users/(?P<pk>[0-9]+)/$', views.UserDetail.as_view(), name='user-detail')
]

在myapp下新建一個(gè)api_path.py
在myapp/api_path.py增加主頁的view

from rest_framework.reverse import reverse
from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['GET'])
def api_root(request, format=None):
    return Response({
        'users': reverse('user-list', request=request, format=format),
        'snippets': reverse('snippet-list', request=request, format=format)
    })

完成這個(gè)功能只需要一個(gè)簡單的FBV提供GET方法即可背率,這個(gè)view將返回所有有效的url(通過JSON格式)话瞧。
reverse方法通過url的名字,返回一個(gè)完整的url寝姿。
在myapp/api_path.py配置主頁的url
盡量不要使用任何正則式交排,保證我們直接訪問最原始的url就可以訪問的接口的主頁。
養(yǎng)成好習(xí)慣会油,為每個(gè)url都增加參數(shù)name个粱。

urlpatterns = format_suffix_patterns([
    url(r'^$', views.api_root, name='api-index'),
    ...
])

配置后的接口主頁


image.png

現(xiàn)在可以直接通過點(diǎn)擊鏈接訪問有效的url了,但是不要忘記當(dāng)我們增加新的url后翻翩,要在主頁的view中進(jìn)行配置。

  1. 為序列化類增加url
    現(xiàn)在我們的json數(shù)據(jù)稻薇,表的關(guān)系是通過id聯(lián)系的嫂冻,現(xiàn)在我們希望用url代替id。

在snippet/serializers.py更改序列化類

class SnippetSerializer(serializers.HyperlinkedModelSerializer):
    ...
    highlight = serializers.HyperlinkedIdentityField(view_name='snippet-highlight', format='html')

    class Meta:
        ...
        fields = ('url', 'highlight', ...)


class UserSerializer(serializers.HyperlinkedModelSerializer):
    snippets = serializers.HyperlinkedRelatedField(many=True, view_name='snippet-detail', read_only=True)

    class Meta:
        ...
        fields = ('url', ...)

將ModelSerializer改為HyperlinkedModelSerializer塞椎。
在繼承后桨仿,就自動(dòng)會(huì)增加一個(gè)字段url,但是需要手動(dòng)配置到fields中
為普通字段提供了HyperlinkedIdentityField案狠,為外鍵字段提供了HyperlinkedRelatedField服傍。其中最關(guān)鍵的參數(shù)view_name的值是url的參數(shù)name钱雷,也就是通過url配置中的name來獲取到對應(yīng)的url。

  1. 配置全局分頁
    在drf_tutorial/settings.py配置分頁
REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吹零,一起剝皮案震驚了整個(gè)濱河市罩抗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灿椅,老刑警劉巖套蒂,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茫蛹,居然都是意外死亡操刀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門婴洼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骨坑,“玉大人,你說我怎么就攤上這事柬采』锻伲” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵警没,是天一觀的道長匈辱。 經(jīng)常有香客問我,道長杀迹,這世上最難降的妖魔是什么亡脸? 我笑而不...
    開封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮树酪,結(jié)果婚禮上浅碾,老公的妹妹穿的比我還像新娘。我一直安慰自己续语,他們只是感情好垂谢,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疮茄,像睡著了一般滥朱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上力试,一...
    開封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天徙邻,我揣著相機(jī)與錄音,去河邊找鬼畸裳。 笑死缰犁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帅容,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颇象,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了并徘?” 一聲冷哼從身側(cè)響起遣钳,我...
    開封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饮亏,沒想到半個(gè)月后耍贾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡路幸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年荐开,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片简肴。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晃听,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出砰识,到底是詐尸還是另有隱情能扒,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布辫狼,位于F島的核電站初斑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏膨处。R本人自食惡果不足惜见秤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望真椿。 院中可真熱鬧鹃答,春花似錦、人聲如沸突硝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽解恰。三九已至锋八,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間护盈,已是汗流浹背查库。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留黄琼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像脏款,于是被迫代替她去往敵國和親围苫。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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

  • 模塊間聯(lián)系越多撤师,其耦合性越強(qiáng)剂府,同時(shí)表明其獨(dú)立性越差( 降低耦合性,可以提高其獨(dú)立性)剃盾。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,072評(píng)論 0 8
  • 切換到創(chuàng)建項(xiàng)目的目錄 cd C:\Users\admin\Desktop\DjangoProject創(chuàng)建名為pr...
    在努力中閱讀 3,275評(píng)論 2 3
  • 已經(jīng)同步到gitbook腺占,想閱讀的請轉(zhuǎn)到gitbook: Django 1.10 中文文檔 URL dispatc...
    leyu閱讀 14,205評(píng)論 0 16
  • 大家好,我是江蘇蘇州的阿英痒谴,典型的80后衰伯,十多年來一直從事倉管,做事認(rèn)真仔細(xì)积蔚,老板比較放心意鲸,現(xiàn)在是兩個(gè)寶寶的媽媽。...
    一翻風(fēng)順閱讀 128評(píng)論 0 0
  • 只有上午在學(xué)習(xí)尽爆。 下午和晚上又開始刷知乎和b站怎顾。 我復(fù)習(xí)的很好,沒有來不及漱贱,我可能在給自己設(shè)限吧槐雾,我覺得那些知識(shí)點(diǎn)...
    小玉哥閱讀 120評(píng)論 0 0