记一次feign调用400,参数过长导致,修改解决
feign客户端 @PostMapping("/website/checkChooseColumn") boolean checkChooseColumn(@RequestParam("chooseColumn") String chooseColumn);
服务端
@PostMapping("/checkChooseColumn") public boolean checkChooseColumn(@RequestParam("chooseColumn") String chooseColumn){}
当chooseColumn 字符串过长时,feign调用会报错400。原因大概是因为
Feign默认将@RequestParam
参数作为查询参数(Query Param)拼接到URL中,而非放入请求体。当chooseColumn
字符串过长时,会导致URL超过服务器允许的最大长度,从而引发400 Bad Request
错误。
解决方案:
改用@RequestBody
传递参数
客户端修改:
@PostMapping("/website/checkChooseColumn")
boolean checkChooseColumn(@RequestBody String chooseColumn);
服务端修改:
@PostMapping("/checkChooseColumn")
public boolean checkChooseColumn(@RequestBody String chooseColumn) {}
此时新的问题又出现了。服务端接收到的中文是乱码
解决方案:
@PostMapping(value = "/website/checkChooseColumnNewFunction", consumes = "application/json;charset=UTF-8") boolean checkChooseColumnNewFunction(@RequestBody String chooseColumn);
@PostMapping(value = "/checkChooseColumnNewFunction", consumes = "application/json;charset=UTF-8" ) public boolean checkChooseColumnNewFunction(@RequestBody String storySyncColumns){}