27、请求处理-【源码分析】-怎么改变默认的_method
要改变 Spring Boot 中默认的 `_method` 参数,可以通过以下步骤实现:
#### 原理分析
Spring Boot 中默认的 `HiddenHttpMethodFilter` 用于将表单中的 `_method` 参数值映射为实际的 HTTP 方法(如 PUT、DELETE 等),以便支持 RESTful 风格的请求。
#### 修改默认 `_method` 参数
1. **自定义 `HiddenHttpMethodFilter`**
- 创建一个配置类,自定义 `HiddenHttpMethodFilter` Bean。
```java
@Configuration
public class WebConfig {
@Bean
public HiddenHttpMethodFilter hiddenHttpMethodFilter() {
HiddenHttpMethodFilter filter = new HiddenHttpMethodFilter();
filter.setMethodParam("_m"); // 将默认的 _method 修改为 _m
return filter;
}
}
```
2. **修改表单**
- 在表单中,将原先的 `_method` 隐藏域名称修改为 `_m`。
```html
<form action="/user" method="post">
<input name="_m" type="hidden" value="DELETE" />
<input type="submit" value="REST-DELETE 提交" />
</form>
```
#### 原理说明
- **`@ConditionalOnMissingBean(HiddenHttpMethodFilter.class)`**
- `WebMvcAutoConfiguration` 类中,默认的 `HiddenHttpMethodFilter` Bean 是在没有用户自定义该 Bean 时才会被创建。
- **自定义 Bean 生效**
- 通过自定义 `HiddenHttpMethodFilter` Bean 并设置 `setMethodParam` 方法,覆盖了默认的配置,从而改变了 `_method` 参数的默认值。
---
通过以上步骤,成功将 Spring Boot 中默认的 `_method` 参数修改为 `_m`,实现了自定义请求方法参数的功能。