Flask??response?對象詳情

在 Flask 中,響應(yīng)使用 Response 對象表示,響應(yīng)報文中的大部分內(nèi)容由服務(wù)器處理,一般情況下,我們只負責(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)碼默認為200,MIME 的類型為text/html,然后返回該 Response 對象。
其實視圖函數(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 值會覆蓋默認的200狀態(tài)碼,headers 可以是一個列表或者字典,作為額外的消息頭。
其實我們也可以先構(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)碼,默認是200。
之前的案例都是返回的純文本格式,但是在實際開發(fā)中一般都是返回 json 格式,那該怎么做呢?
我們都知道 Python 標準庫中的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ù)進行序列化,轉(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)文章
numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實現(xiàn)
這篇文章主要介紹了numpy數(shù)據(jù)類型dtype轉(zhuǎn)換實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
pytest解讀fixture有效性及跨文件共享fixtures
這篇文章主要為大家介紹了pytest官方文檔fixture有效性及跨文件共享fixtures的解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-06-06
Python Selenium中常用的元素定位方法總結(jié)
在Web自動化測試中,元素定位是一項非常重要的技術(shù),Python Selenium提供了各種元素定位方法,可以幫助我們定位頁面上的元素并與之交互,本文將詳細介紹Python Selenium中常用的元素定位方法,并提供實例代碼,需要的朋友可以參考下2023-11-11
Python局部函數(shù)及用法詳解(含nonlocal關(guān)鍵字)
局部函數(shù)有哪些特征,在使用時需要注意什么呢?接下來就給讀者詳細介紹?Python?局部函數(shù)的用法,對Python局部函數(shù)相關(guān)知識感興趣的朋友跟隨小編一起看看吧2022-12-12

