做項目的時候,想把接口寫标準點,于是在更新内容的時候采用put送出内容,但是送出内容時總是擷取不到參數,總是選擇參數為null。
首先貼出我的put的方法控制器的代碼
和之前的一般請求處理的一樣,開啟調試模式調試了一下,發現傳上來的token參數為null。
百思不得其解,于是在網上尋找了一下資料,但是沒有關于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 {
}
出乎意料的可以,運作了一下。
在列印的log中可以發現,我們設定的putFilter已經生效了,于是從新的通路了一下接口,發現接受的參數還是為null,但是需要把form表單的enctype屬性設定為application/x- www-form-urlencoded.,之後終于可以擷取參數了,如下