springboot post 传参特殊符号问题

前端项目传递来 windows 目录的字符串,整个 json 参数如下:
{"originalFilename":"D:\autobackup\PADAccount20220705145150.bak","zipFilename":"D:\autobackup\db.zip"}
是 post 请求,controller 中该方法的代码如下:

    @PostMapping("/toZip")
    public String toZip(@RequestBody Map<String,String> params){
        String originalFilename = params.get("originalFilename");
        String zipFilename = params.get("zipFilename");

        try {
            ZipUtils.toZip(originalFilename,zipFilename);
        }catch (Exception e){
            return "压缩时出现异常!";
        }
        return "压缩完毕!";
    }

后端 springboot 项目会报错400,controller方法内的第一行下断点也捕捉不到
查阅资料后说是要配置内置 tomcat 参数,在项目启动类中添加下面代码

    @Bean
    public TomcatServletWebServerFactory tomcatServletWebServerFactory (){
        // 修改内置的 tomcat 容器配置
        TomcatServletWebServerFactory tomcatServlet = new TomcatServletWebServerFactory();
        tomcatServlet.addConnectorCustomizers(
                (TomcatConnectorCustomizer) connector -> {
                    connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
                    connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
                }
        );
        System.out.println("重新配置内置 tomcat");
        return tomcatServlet;
    }

重新启动程序,再次请求一样的错误
请问要如何解决 - google 上翻了3页,每个帖子都照着做没解决。

阅读 4.1k
2 个回答

传json就要规范起来,接口限制Content-Type只能是json
@PostMapping(value = "/toZip", consumes = MediaType.APPLICATION_JSON_VALUE)
前端提交的时候设置Content-Type为application/json

json里带有反斜杆时,需要进行转义,所以前端传过来的json应该是这样

{
    "originalFilename":"D:\\autobackup\\PADAccount20220705145150.bak",
    "zipFilename":"D:\\autobackup\\db.zip"
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题