因为业务需求,将多个sql语句写到一个String里面用分号隔开,然后用Feign调用服务,打断点在服务方,发现传过来的参数分号变成了逗号,有遇到过类似情况的吗
好像没啥代码可贴的,服务方的controller层第一行拿到参数,也没做改动,分号就已经变成了逗号
因为业务需求,将多个sql语句写到一个String里面用分号隔开,然后用Feign调用服务,打断点在服务方,发现传过来的参数分号变成了逗号,有遇到过类似情况的吗
好像没啥代码可贴的,服务方的controller层第一行拿到参数,也没做改动,分号就已经变成了逗号
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