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

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

    评论

报告相同问题?