Flask HTTP 方法

2021-08-10 11:32 更新

HTTP (與 Web 應(yīng)用會(huì)話的協(xié)議)有許多不同的訪問(wèn) URL 方法。默認(rèn)情況下,路 由只回應(yīng) GET 請(qǐng)求,但是通過(guò) route() 裝飾器傳遞 methods 參數(shù)可以改變這個(gè)行為。這里有一些例子:

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        do_the_login()
    else:
        show_the_login_form()

如果存在 GET ,那么也會(huì)替你自動(dòng)地添加 HEAD,無(wú)需干預(yù)。它會(huì)確保 遵照 < a rel="nofollow" class="reference external" rel="external nofollow" target="_blank" >HTTP RFC (描述 HTTP 協(xié)議的文檔)處理 HEAD 請(qǐng)求,所以你可以 完全忽略這部分的 HTTP 規(guī)范。同樣,自從 Flask 0.6 起, 也實(shí)現(xiàn)了 OPTIONS 的自動(dòng)處理。

你不知道一個(gè) HTTP 方法是什么?不必?fù)?dān)心,這里會(huì)簡(jiǎn)要介紹 HTTP 方法和它們 為什么重要:

HTTP 方法(也經(jīng)常被叫做“謂詞”)告知服務(wù)器,客戶端想對(duì)請(qǐng)求的頁(yè)面 些什么。下面的都是非常常見的方法:

GET
瀏覽器告知服務(wù)器:只 獲取 頁(yè)面上的信息并發(fā)給我。這是最常用的方法。
HEAD
瀏覽器告訴服務(wù)器:欲獲取信息,但是只關(guān)心 消息頭 。應(yīng)用應(yīng)像處理 GET 請(qǐng)求一樣來(lái)處理它,但是不分發(fā)實(shí)際內(nèi)容。在 Flask 中你完全無(wú)需 人工 干預(yù),底層的 Werkzeug 庫(kù)已經(jīng)替你打點(diǎn)好了。
POST
瀏覽器告訴服務(wù)器:想在 URL 上 發(fā)布 新信息。并且,服務(wù)器必須確保 數(shù)據(jù)已存儲(chǔ)且僅存儲(chǔ)一次。這是 HTML 表單通常發(fā)送數(shù)據(jù)到服務(wù)器的方法。
PUT
類似 POST 但是服務(wù)器可能觸發(fā)了存儲(chǔ)過(guò)程多次,多次覆蓋掉舊值。你可 能會(huì)問(wèn)這有什么用,當(dāng)然這是有原因的??紤]到傳輸中連接可能會(huì)丟失,在 這種 情況下瀏覽器和服務(wù)器之間的系統(tǒng)可能安全地第二次接收請(qǐng)求,而 不破壞其它東西。因?yàn)?POST 它只觸發(fā)一次,所以用 POST 是不可能的。
DELETE
刪除給定位置的信息。
OPTIONS
給客戶端提供一個(gè)敏捷的途徑來(lái)弄清這個(gè) URL 支持哪些 HTTP 方法。 從 Flask 0.6 開始,實(shí)現(xiàn)了自動(dòng)處理。

有趣的是,在 HTML4 和 XHTML1 中,表單只能以 GETPOST 方法提交到 服務(wù)器。但是 JavaScript 和未來(lái)的 HTML 標(biāo)準(zhǔn)允許你使用其它所有的方法。此 外,HTTP 最近變得相當(dāng)流行,瀏覽器不再是唯一的 HTTP 客戶端。比如,許多版 本控制系統(tǒng)就在使用 HTTP。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)