python django rest api設(shè)計(jì)

概念:http://www.ruanyifeng.com/blog/2014/05/restful_api.html
設(shè)計(jì)規(guī)則:http://www.ruanyifeng.com/blog/2011/09/restful.html
Django REST framework:http://www.tuicool.com/articles/zUbymyM
Django REST framework:http://www.cnblogs.com/holbrook/archive/2012/02/19/2358704.html
Django REST framework官方教程:http://wenku.baidu.com/link?url=SJ-m2PgJn9NEZVO24Ulq_8Qsa9tpQLaQDAbfqAPJVSmW_eEuf9R-AX_ieeXyHfzGIbiaj4sRqvLuRjjXdbgzleF_h4xr5n6kORN4Vg3xT5K

這實(shí)際上可以把一個(gè)類的所有屬性和方法調(diào)用全部動(dòng)態(tài)化處理了,不需要任何特殊手段。
這種完全動(dòng)態(tài)調(diào)用的特性有什么實(shí)際作用呢?作用就是,可以針對(duì)完全動(dòng)態(tài)的情況作調(diào)用。
舉個(gè)例子:
現(xiàn)在很多網(wǎng)站都搞REST API,比如新浪微博、豆瓣啥的,調(diào)用API的URL類似:
http://api.server/user/friendshttp://api.server/user/timeline/list
如果要寫SDK,給每個(gè)URL對(duì)應(yīng)的API都寫一個(gè)方法,那得累死,而且,API一旦改動(dòng),SDK也要改。
利用完全動(dòng)態(tài)的getattr,我們可以寫出一個(gè)鏈?zhǔn)秸{(diào)用:

class Chain(object):
    def __init__(self, path=''):
        self._path = path
    def __getattr__(self, path):
        return Chain('%s/%s' % (self._path, path))
    def __str__(self):
        return self._path

>>> Chain().status.user.timeline.list
'/status/user/timeline/list'

這樣,無論API怎么變,SDK都可以根據(jù)URL實(shí)現(xiàn)完全動(dòng)態(tài)的調(diào)用,而且,不隨API的增加而改變!
還有些REST API會(huì)把參數(shù)放到URL中,比如GitHub的API:
GET /users/:user/repos
調(diào)用時(shí),需要把:user替換為實(shí)際用戶名。如果我們能寫出這樣的鏈?zhǔn)秸{(diào)用:
Chain().users('michael').repos
就可以非常方便地調(diào)用API了。有興趣的童鞋可以試試寫出來。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,564評(píng)論 19 139
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,835評(píng)論 6 427
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,048評(píng)論 25 709
  • 如果我有一座山 我想要你下起雨,流過山上 如果你有一座山 我愿是一棵樹,長(zhǎng)得更高些 對(duì)不起 我沒有一座山 還好 天...
    西窗紅燭閱讀 357評(píng)論 0 0
  • 早上我起床,媽媽就干活去了,等我給寶寶穿衣洗漱后,就匆匆吃早飯,因?yàn)槲覀冇?jì)劃今天出門——上街買菜。 熙熙攘攘的人群...
    云卷云舒2017閱讀 208評(píng)論 0 0

友情鏈接更多精彩內(nèi)容