20201109-第十三講-Flask-session&上下文管理

3-Flask上下文

Flask項(xiàng)目中有二個(gè)上下文题山,一個(gè)是應(yīng)用文上下文(app)枫振,另外一個(gè)是請(qǐng)求上下文(request)澳化。請(qǐng)求上下文request和應(yīng)用文上下文current_app都是一個(gè)全局變量烁竭。所有請(qǐng)求都共享的召边。Flask有特殊的機(jī)制可以保證每次請(qǐng)求的數(shù)據(jù)是隔離的铺呵,及A請(qǐng)求所產(chǎn)生的數(shù)據(jù)不會(huì)影響到B請(qǐng)求。所有可以直接導(dǎo)入request對(duì)象隧熙,也不會(huì)被一些數(shù)據(jù)影響了片挂。并且不需要在每個(gè)函數(shù)中使用request的時(shí)候傳入request對(duì)象。這二個(gè)上下文具體的實(shí)現(xiàn)方式和原理可以沒(méi)有不要詳細(xì)了解贞盯。

request:請(qǐng)求上下文的對(duì)象音念。這個(gè)對(duì)象一般用來(lái)保存一些請(qǐng)求的變量。比如method 躏敢、args 闷愤、 form等。

session:請(qǐng)求上下文的對(duì)象件余。這個(gè)對(duì)象一般用來(lái)保存一些會(huì)話信息讥脐。

current_app:返回當(dāng)前的app。

g:應(yīng)用上下文的對(duì)象啼器。處理請(qǐng)求時(shí)用作臨時(shí)存儲(chǔ)的對(duì)象旬渠。

常用的鉤子函數(shù)

。before_first_request:處理第一次請(qǐng)求之前執(zhí)行端壳。

1 @app.before_first_request

2? ? ? ?def first_request():

3? ? ? ? ? ? ? print 'first time request'

坟漱。before_request:在每次請(qǐng)求之前執(zhí)行,通掣澹可以用這個(gè)裝飾器來(lái)給視圖函數(shù)增加一些變量芋齿。

1 @app.before_request

2? ? ? def before_request():

3? ? ? ? ? ?if not hasattr(g,'user'):

4? ? ? ? ? ? ? ? ? setattr(g,'user','xxxx')

。teardown_appcontext:不管是否有異常成翩,注冊(cè)的函數(shù)都會(huì)在每次請(qǐng)求之后執(zhí)行觅捆。

1 @app.teardown_appcontext

2 def teardown(response):

3? ? ? print("teardown 被執(zhí)行")

4? ? ? return respons

。context_processor:上下文處理器麻敌。返回的字典中的鍵可以在模板上下文中使用栅炒。

1 @app.context_processor

2 def context_processor():

3? ? ? ? return {'current_user':'xxx'}

。errorhandkler:errorhandler接收狀態(tài)碼,可以自定義返回這種狀態(tài)碼的響應(yīng)的處理方法赢赊。

1 @app.errorhandler(404)

2? ? ? ?def page_not_found(error):

3? ? ? ? ? ? return 'This page does not exist',404

4-Restful API規(guī)范

restful api 是用于在前端與后臺(tái)進(jìn)行通信的一套規(guī)范乙漓。使用這個(gè)規(guī)范可以讓前后端開(kāi)發(fā)變得更加輕松。以下將討論這套規(guī)范的一些設(shè)計(jì)細(xì)節(jié)

協(xié)議:采用http或https協(xié)議释移。

數(shù)據(jù)傳輸格式:數(shù)據(jù)之間傳輸?shù)母袷綉?yīng)該都使用json叭披,而不使用xml。

url鏈接:url鏈接中玩讳,不能有動(dòng)詞涩蜘,只能有名詞。并且對(duì)于一些名詞熏纯,如果出現(xiàn)復(fù)數(shù)同诫,那么應(yīng)該在后面加s。

HTTP請(qǐng)求的方法

GET:從服務(wù)器上獲取資源樟澜。

POST:在服務(wù)器上新創(chuàng)建一個(gè)資源误窖。

PUT:在服務(wù)器上更新資源。(客戶端提供所有改變后的數(shù)據(jù))

PATCH:在服務(wù)器上更新資源秩贰。(客戶端只提供需要改變的屬性)

DELETE:從服務(wù)器上刪除資源贩猎。

示例

1.GET/users/:獲取所有用戶

2.POST/users/:新建一個(gè)用戶

3.GET/user/id/:根據(jù)id獲取一個(gè)用戶

4.PUT/user/id/:更新某個(gè)id的用戶的信息(需要提供用戶所有信息)

5.PATCH/user/id/:更新某個(gè)id 的用戶信息(只需要提供需要改變的信息)

6.DELETE/user/id/:刪除一個(gè)用戶。

狀態(tài)碼

狀態(tài)碼? ? ? ? ? ? 原生描述? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 描述

200? ? ? ? ? ? ? ? ? OK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 服務(wù)器成功響應(yīng)客戶端的請(qǐng)求萍膛。?

400? ? ? ? ? ? ? ? ? INVALID REQUEST? ? ? ? ? ? ? ? ?用戶發(fā)出的請(qǐng)求有錯(cuò)誤吭服,服務(wù)器沒(méi)有進(jìn)行? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 新建或修改數(shù)據(jù)的操作

401? ? ? ? ? ? ? ? ? Unauthorized? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用戶沒(méi)有權(quán)限訪問(wèn)這個(gè)請(qǐng)求

403? ? ? ? ? ? ? ? ? Forbidden? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 因?yàn)槟承┰蚪乖L問(wèn)這個(gè)請(qǐng)求

404? ? ? ? ? ? ? ? ? ?NOT FOUND? ? ? ? ? ? ? ? ? ? ? ? ? ? ?用戶發(fā)送的請(qǐng)求的url不存在

406? ? ? ? ? ? ? ? ? ?NOT Acceptable? ? ? ? ? ? ? ? ? ? ? ?用戶請(qǐng)求不被服務(wù)器接收(如服務(wù)器期? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?望客戶端發(fā)送某個(gè)字段,但沒(méi)有發(fā)送)

500? ? ? ? ? ? ? ? ? ?Internal server error? ? ? ? ? ? ? ? ? 服務(wù)器內(nèi)部錯(cuò)誤蝗罗,比如出現(xiàn)了bug

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艇棕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子串塑,更是在濱河造成了極大的恐慌沼琉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桩匪,死亡現(xiàn)場(chǎng)離奇詭異打瘪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)傻昙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)闺骚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人妆档,你說(shuō)我怎么就攤上這事僻爽。” “怎么了贾惦?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵胸梆,是天一觀的道長(zhǎng)敦捧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)碰镜,這世上最難降的妖魔是什么兢卵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮绪颖,結(jié)果婚禮上秽荤,老公的妹妹穿的比我還像新娘。我一直安慰自己菠发,他們只是感情好王滤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布贺嫂。 她就那樣靜靜地躺著滓鸠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪第喳。 梳的紋絲不亂的頭發(fā)上糜俗,一...
    開(kāi)封第一講書(shū)人閱讀 51,245評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音曲饱,去河邊找鬼悠抹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛扩淀,可吹牛的內(nèi)容都是我干的楔敌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼驻谆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼卵凑!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起胜臊,我...
    開(kāi)封第一講書(shū)人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勺卢,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后象对,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體黑忱,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年勒魔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甫煞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冠绢,死狀恐怖危虱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唐全,我是刑警寧澤埃跷,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布蕊玷,位于F島的核電站,受9級(jí)特大地震影響弥雹,放射性物質(zhì)發(fā)生泄漏垃帅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一剪勿、第九天 我趴在偏房一處隱蔽的房頂上張望贸诚。 院中可真熱鬧,春花似錦厕吉、人聲如沸酱固。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)运悲。三九已至,卻和暖如春项钮,著一層夾襖步出監(jiān)牢的瞬間班眯,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工烁巫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留署隘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓亚隙,卻偏偏與公主長(zhǎng)得像磁餐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子阿弃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354