在使用RestFul風格來發(fā)送Put請求時,報錯Request method ‘POST’ not supported
org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported
在網(wǎng)上搜了普遍的解決方法,如下:
- 在配置文件中添加以下代碼,開啟HiddenHttpMethodFilter
spring.mvc.hiddenmethod.filter.enable=true
?在表單中添加以下代碼,修改請求方式
<form action="/admin/put" method="post">
??????? <input name="_method" value="PUT" type="hidden">
??????? <input type="submit" value="PUT提交"/>
</form>
但是以上的方法都沒有解決我的問題,仍然報錯“不支持POST請求”
后來我通過對源碼進行斷點分析,發(fā)現(xiàn)程序沒有走SpringBoot自動配置類WebMvcAutoConfiguration中的OrderedHiddenHttpMethodFilter方法,而該方法正是讓post請求包裝成PUT、DELETE的核心方法。
?
?文章來源:http://www.zghlxwxcb.cn/news/detail-861501.html
前面已經(jīng)通過配置spring.mvc.hiddenmethod.filter.enable=true開啟了該方法,但是為什么沒有起作用呢?
我注意到在自動配置類WebMvcAutoConfiguration上面有一句注解@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})
我明白了,之前在做登錄攔截的時候,編寫了WebMvcConfiguration,該類繼承了WebMvcConfigurationSupport,所以自己編寫的WebMvcConfiguration類不能讓SpringBoot的自動配置類起作用了。
?
?
解決辦法
在自己編寫的WebMvcConfiguration中配置OrderedHiddenHttpMethodFilter文章來源地址http://www.zghlxwxcb.cn/news/detail-861501.html
@Configuration
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
//配置OrderedHiddenHttpMethodFilter
@Bean
public OrderedHiddenHttpMethodFilter hiddenHttpMethodFilter() {
return new OrderedHiddenHttpMethodFilter();
}
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/admin/**")
.excludePathPatterns("/admin")
.excludePathPatterns("/admin/user")
.excludePathPatterns("/css/**")
.excludePathPatterns("/img/**")
.excludePathPatterns("/js/**")
.excludePathPatterns("/lib/**");
}
}
到了這里,關(guān)于matinal:http POST集成報錯:Request method ‘POST‘ not supported怎么解決,給某個系統(tǒng)的人看的的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!