Flask  response 對象詳情

在 Flask 中,響應使用 Response 對象表示,響應報文中的大部分內容由服務器處理,一般情況下,我們隻負責返回主體內容即可。在之前的文章中,我們瞭解到 Flask 會先匹配請求 url 的路由,調用對應的視圖函數,視圖函數的返回值構成瞭響應報文的主體內容。

如果視圖函數隻返回一個元素的話,Flask 會創建 Response 對象,Response將該返回值作為主體內容,狀態碼默認為200,MIME 的類型為text/html,然後返回該 Response 對象。

其實視圖函數可以返回最多由個元素組成的元組:響應主體、狀態碼、首部字段。我們也可以指定這三個元素的值。

@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()視圖函數返回一個元組,那麼狀態碼 status 值會覆蓋默認的200狀態碼,headers 可以是一個列表或者字典,作為額外的消息頭。

其實我們也可以先構建 Response 響應對象,設置一些參數(比如狀態碼,響應頭等)後,然後直接返回Response 響應對象。

@app.route('/hello3')

def hello3():

    response = make_response('hello 3', 202)

    response.headers["my-headers"] = "tigeriaf"

    return response

make_response()方法就是用來構建response對象的,第二個參數表示響應狀態碼,默認是200。

之前的案例都是返回的純文本格式,但是在實際開發中一般都是返回 json 格式,那該怎麼做呢?

我們都知道 Python 標準庫中的json模塊為程序提供瞭 JSON 格式支持,Flask 也在json包的基礎上做瞭一些功能的封裝,我們可以直接導入 Flaskjson 包,將數據序列化為 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()方法,我們僅需要傳入數據或者參數等,它會對我們傳入的數據進行序列化,轉換成 JSON 字符串作為響應的主體,然後生成一個響應對象,並且自動設置 MIME 類型,

如下:

@app.route('/hello4')

def hello4():

    data = {

        "status": 0,

        "message": "success",

        "data":

            {"name": "tigeriaf",

             "age": 24

             }

    }

    return jsonify(data)

可見,jsonify()方法大大簡化瞭我們的代碼,而且jsonify()方法接收多種形式的參數,可以傳入普通參數,也可以傳入關鍵字參數,使用非常方便。

到此這篇關於 Flask  response 對象詳情的文章就介紹到這瞭,更多相關 Flask  response 對象內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: