spring webflux 接收表单参数(亲测可用)
前端请求信息
请求头
POST /apigateway/api/page HTTP/1.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 103
Connection: keep-alive
Sec-GPC: 1
Pragma: no-cache
Cache-Control: no-cache
请求参数(已解析)
form表单参数
page=1&limit=10&apiName=测试GET接口&apiServerRoute=&apiPath=&appCatalogId=0
后端代码(亲测可用)
controller代码
/**
* 根据条件分页查询
*
* @param apiDto 参数对象(包含分页参数)
* @return
*/
@PostMapping("/pageByCondition")
@ApiOperation(value = "分页查询指定分类下接口", notes = "", httpMethod = "Post")
public ResultData<List<ApiPO>> pageByCondition(@Validated @ModelAttribute ApiDTO apiDto) {
Page<ApiPO> pos = apiService.pageByCondition(apiDto);
return ResultData.success(pos.getContent(), pos.getTotalElements());
}
失败案例
通过订阅 exchange.getFormData() 获取(失败)
// exchange.getFormData() 获取(失败)
@PostMapping("/pageByCondition")
public ResultData<List<ApiPO>> pageByCondition(ServerWebExchange exchange) {
MultiValueMap<String, String> formDataResponse = new LinkedMultiValueMap<>();
exchange.getFormData().subscribe(formDataResponse::addAll);
}
通过订阅 exchange.getMultipartData() 获取(失败)
// exchange.getMultipartData() 获取(失败)
@PostMapping("/pageByCondition")
public ResultData<List<ApiPO>> pageByCondition(ServerWebExchange exchange) {
MultiValueMap<String, Part> formMultipart = new LinkedMultiValueMap<>();
exchange.getMultipartData().subscribe(formMultipart::addAll);
}
参考案例
引用参考
[1] blog.csdn.net/qq_37044686… webflux 支持formdata获取参数(包括文件),以及formdata参数封装
[2] segmentfault.com/q/101000001… spring-webflux两种开发模式,获取不到使用ajax的post提交的数据?
[3] www.cnblogs.com/moyu0-0/art… Spring WebFlux 官方文档(博主翻译重制)
[4] juejin.cn/post/703846… Spring Cloud Gateway 读取请求传参
[5] stackoverflow.com/questions/6… stackoverflow.com/questions/6…
[6] blog.csdn.net/weixin_4393… springboot webflux 参数传递(表单序列化)
实现参考
[1] www.cnblogs.com/limuma/p/93… Spring Boot WebFlux-10——WebFlux 实战图书管理系统