2 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
這里有兩件事在起作用:
事實(shí)上,您只能訂閱(即讀?。┱?qǐng)求正文一次
從請(qǐng)求中獲取表單數(shù)據(jù)需要讀取并解析它
在 Spring Boot 2.0.x-2.1.x 中,HiddenHttpMethodFilter
默認(rèn)啟用。此過濾器對(duì)于在 HTML 表單中使用瀏覽器本身不支持的 HTTP 方法(例如“DELETE”)非常有用。如果傳入請(qǐng)求屬于該類型,則此過濾器需要解析表單數(shù)據(jù)。
可以說,這種用例越來越少見,并且從 Spring Boot 2.2 開始默認(rèn)被禁用。
現(xiàn)在,在您的示例中,讀取和解析傳入請(qǐng)求將不起作用,因?yàn)樗驯贿^濾器解析。禁用過濾器可以解決該問題。
但解決這個(gè)問題的更好方法是使用專用方法request.formData()
,它將解析并緩存結(jié)果(如果多次調(diào)用,則返回已解析的數(shù)據(jù))。

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊
每當(dāng)您等待表單數(shù)據(jù)時(shí),您應(yīng)該使用
Mono<MultiValueMap<String, String>> formData = incomingHttpRequest.formData();
我已經(jīng)測試過,這種和平的代碼適用于這一更改。
添加回答
舉報(bào)