一口一个菠萝 2020-07-22 08:38 采纳率: 50%
浏览 623

Feign调用服务的时候,sql语句中的分号变成了逗号

因为业务需求,将多个sql语句写到一个String里面用分号隔开,然后用Feign调用服务,打断点在服务方,发现传过来的参数分号变成了逗号,有遇到过类似情况的吗

好像没啥代码可贴的,服务方的controller层第一行拿到参数,也没做改动,分号就已经变成了逗号

  • 写回答

5条回答 默认 最新

  • 可少 2022-07-28 16:41
    关注

    feign.template.QueryTemplate
    这个类把带分号的queryString里的参数用split处理成了数组,然后你传往下一个服务的时候,用string接受的话,会用逗号给你拼接成字符串。

    
        /* covert the comma separated values into a value query string */
        List<String> resolved = Arrays.stream(values.split(COLLECTION_DELIMITER))
            .filter(Objects::nonNull)
            .filter(s -> !UNDEF.equalsIgnoreCase(s))
            .collect(Collectors.toList());
    
        if (!resolved.isEmpty()) {
          return this.collectionFormat.join(name, resolved, this.getCharset()).toString();
        }
    

    也就是说,feign预设了使用者如果是用传参带了分号过来的,他认为你传的是Collection,而不是String

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况