介紹
在本篇文章中,我們將研究如何在 Spring Rest Controller 中訪問 HTTP 頭信息。
首先,我們將使用 @RequestHeader 註解分別或同時讀取 HTTP 頭信息。
之後,我們將深入研究 @RequestHeader 的屬性。
獲取 HTTP 頭信息
獲取單個 HTTP 頭信息
如果我們需要訪問一個特定的 HTTP 頭信息,我們可以用頭名配置 @RequestHeader:
然後,我們可以使用傳遞給我們方法的變量來訪問該值。 如果在請求中找不到名為 accept-language 的頭信息,則該方法將返回“400 Bad Request”錯誤。
我們的頭信息不一定是字符串。例如,如果我們知道我們的頭是一個數字,我們可以聲明我們的變量為一個數字類型:
獲取多個 HTTP 頭信息
如果我們不確定會出現哪些頭文件,或者我們需要的頭文件比方法簽名中需要的多,我們可以使用 @RequestHeader 註釋,而不需要特定的名稱。
對於變量類型,我們有幾種選擇:Map,MultiValueMap 或 HttpHeaders 對象。
首先,讓我們以 Map 的形式獲取請求的頭信息:
如果我們使用 Map,並且其中一個頭信息具有多個值,則只能獲得第一個值。這等效於在 MultiValueMap 上使用 getFirst() 方法。
如果我們的頭信息可能有多個值,我們可以將它們作為 MultiValueMap 進行獲取:
我們還可以將 headers 作為 HttpHeaders 對象獲取:
當我們從 Map,MultiValueMap 或 HttpHeaders 對象中按名稱訪問頭信息時,如果不存在則返回空。
@RequestHeader 屬性
現在,我們已經瞭解了使用 @RequestHeader 註解獲取請求頭的基礎知識,讓我們仔細看一下其屬性。
當我們指定 Header 時,我們已經隱式地使用了 name 或 value 屬性:
我們可以通過使用 name 屬性來完成同樣的事情:
接下來,讓我們以完全相同的方式使用 value 屬性:
當我們指定獲取一個頭信息時,默認情況下該頭信息是必需的。如果在請求中沒有找到該頭信息,控制器將返回一個 400 錯誤。
我們可以使用 required 屬性來表示我們的頭不是必需的:
如果該頭信息在請求頭中不存在,則變量將為 null,因此確保程序能夠正常運行,我們進行適當的空值檢查。
讓我們使用 defaultValue 屬性為頭信息提供默認值:
結束語
在這個簡短的教程中,我們學習瞭如何在 Spring REST Controllers 中訪問請求頭。首先,我們使用 @RequestHeader 註解為 Controller 方法獲取請求頭。
在瞭解了基礎知識之後,我們詳細研究了 @RequestHeader 註解的屬性。
感謝大家的觀看,歡迎關注我的頭條號。
關鍵字: HTTP MultiValueMap 本篇