天天看點

springBoot PUT請求接收不了參數的解決辦法

   做項目的時候,想把接口寫标準點,于是在更新内容的時候采用put送出内容,但是送出内容時總是擷取不到參數,總是選擇參數為null。

    首先貼出我的put的方法控制器的代碼

springBoot PUT請求接收不了參數的解決辦法

    和之前的一般請求處理的一樣,開啟調試模式調試了一下,發現傳上來的token參數為null。

springBoot PUT請求接收不了參數的解決辦法
springBoot PUT請求接收不了參數的解決辦法

    百思不得其解,于是在網上尋找了一下資料,但是沒有關于spring boot 解決這種問題的方法,于是就直接找了下spring關于這方面的問題,這裡給出了一種解決方法。

<filter>
		<filter-name>HttpMethodFilter</filter-name>
		<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>HttpMethodFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
           

    在web.xml添加filter來允許所有的put方法,來允許所有的put請求方法帶參通路。

    但是Spring boot是沒有XML配置的,于是就試了試看可不可以通過注解的方式來配置HttpPutFormContentFilter過濾器。

import org.springframework.stereotype.Component;
import org.springframework.web.filter.HttpPutFormContentFilter;

/**
* Created by Administrator on 2016/8/3.
*/
@Component
public class PutFilter extends HttpPutFormContentFilter {
}
           

    出乎意料的可以,運作了一下。

springBoot PUT請求接收不了參數的解決辦法

    在列印的log中可以發現,我們設定的putFilter已經生效了,于是從新的通路了一下接口,發現接受的參數還是為null,但是需要把form表單的enctype屬性設定為application/x- www-form-urlencoded.,之後終于可以擷取參數了,如下

springBoot PUT請求接收不了參數的解決辦法
springBoot PUT請求接收不了參數的解決辦法

繼續閱讀