Flask??response?對象詳情
在 Flask 中,響應(yīng)使用 Response 對象表示,響應(yīng)報文中的大部分內(nèi)容由服務(wù)器處理,一般情況下,我們只負(fù)責(zé)返回主體內(nèi)容即可。在之前的文章中,我們了解到 Flask 會先匹配請求 url 的路由,調(diào)用對應(yīng)的視圖函數(shù),視圖函數(shù)的返回值構(gòu)成了響應(yīng)報文的主體內(nèi)容。
如果視圖函數(shù)只返回一個元素的話,Flask
會創(chuàng)建 Response
對象,Response
將該返回值作為主體內(nèi)容,狀態(tài)碼默認(rèn)為200,MIME
的類型為text/html
,然后返回該 Response
對象。
其實(shí)視圖函數(shù)可以返回最多由個元素組成的元組:響應(yīng)主體、狀態(tài)碼、首部字段。我們也可以指定這三個元素的值。
@app.route('/hello1') def hello1(): return 'Hello 1' # 等價于返回 Response('Hello 1', status=200, mimetype='text/html') @app.route('/hello2') def hello2(): return 'Hello 2', 201, {'my-headers': 'tigeriaf'}
上面hello2()
視圖函數(shù)返回一個元組,那么狀態(tài)碼 status
值會覆蓋默認(rèn)的200狀態(tài)碼,headers
可以是一個列表或者字典,作為額外的消息頭。
其實(shí)我們也可以先構(gòu)建 Response
響應(yīng)對象,設(shè)置一些參數(shù)(比如狀態(tài)碼,響應(yīng)頭等)后,然后直接返回Response
響應(yīng)對象。
@app.route('/hello3') def hello3(): response = make_response('hello 3', 202) response.headers["my-headers"] = "tigeriaf" return response
make_response()
方法就是用來構(gòu)建response
對象的,第二個參數(shù)表示響應(yīng)狀態(tài)碼,默認(rèn)是200。
之前的案例都是返回的純文本格式,但是在實(shí)際開發(fā)中一般都是返回 json
格式,那該怎么做呢?
我們都知道 Python
標(biāo)準(zhǔn)庫中的json
模塊為程序提供了 JSON
格式支持,F(xiàn)lask 也在json
包的基礎(chǔ)上做了一些功能的封裝,我們可以直接導(dǎo)入 Flask
的 json
包,將數(shù)據(jù)序列化為 json
類型返回,再把Response
對象的 MIME
類型修改為applcation/json
即可。
@app.route('/hello4') def hello4(): data = { "status": 0, "message": "success", "data": {"name": "tigeriaf", "age": 24 } } json_data = json.dumps(data) response = make_response(json_data) response.mimetype = "applcation/json" return response
除此之外,Flask
還提供了更方便的jsonify()方
法,我們僅需要傳入數(shù)據(jù)或者參數(shù)等,它會對我們傳入的數(shù)據(jù)進(jìn)行序列化,轉(zhuǎn)換成 JSON 字符串作為響應(yīng)的主體,然后生成一個響應(yīng)對象,并且自動設(shè)置 MIME 類型,
如下:
@app.route('/hello4') def hello4(): data = { "status": 0, "message": "success", "data": {"name": "tigeriaf", "age": 24 } } return jsonify(data)
可見,jsonify()
方法大大簡化了我們的代碼,而且jsonify()
方法接收多種形式的參數(shù),可以傳入普通參數(shù),也可以傳入關(guān)鍵字參數(shù),使用非常方便。
到此這篇關(guān)于 Flask? response
對象詳情的文章就介紹到這了,更多相關(guān) Flask? response
對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)學(xué)生管理系統(tǒng)并生成exe可執(zhí)行文件詳解流程
由于Python都會了,學(xué)校教的確實(shí)基礎(chǔ),平時就沒怎么去上課,讓美女老師天天腦殼痛,這不快畢業(yè)了,讓我做一個學(xué)生管理系統(tǒng)出來,還要打包成exe發(fā)給她,她就不追究我不上課的問題了2022-01-01python3 cvs將數(shù)據(jù)讀取為字典的方法
今天小編就為大家分享一篇python3 cvs將數(shù)據(jù)讀取為字典的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12使用matplotlib動態(tài)刷新指定曲線實(shí)例
這篇文章主要介紹了使用matplotlib動態(tài)刷新指定曲線實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04人工智能學(xué)習(xí)Pytorch教程Tensor基本操作示例詳解
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch教程Tensor的基本操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析
這篇文章主要介紹了Python異常處理機(jī)制結(jié)構(gòu)實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07一文詳解Python如何優(yōu)雅地對數(shù)據(jù)進(jìn)行分組
這篇文章主要和大家詳細(xì)介紹一下Python是如何優(yōu)雅地對數(shù)據(jù)進(jìn)行分組的,文中通過示例進(jìn)行了詳細(xì)的講解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-07-07