客戶端:

image.png
服務(wù)端:

image.png
問(wèn)題
在url生成的排序,好像不大對(duì)
生產(chǎn)了錯(cuò)誤的查詢
sort=price&sort=DESC
正確的為
sort=price,DESC
過(guò)程
通過(guò)跟蹤 PageableSpringEncoder 組成查詢參數(shù)也沒(méi)啥問(wèn)題

image.png
sort=price,DESC 非常的正常,那就代表,在之后給弄壞了
找到發(fā)生變化的地方
ReflectiveFeign
this.buildTemplateFromArgs.create(argv)
問(wèn)題
QueryTemplate
public String expand(Map<String, ?> variables) {
String name = this.name.expand(variables);
if (this.pure) {
return name;
} else {
List<String> expanded = new ArrayList();
Iterator var4 = this.values.iterator();
while(var4.hasNext()) {
Template template = (Template)var4.next();
String result = template.expand(variables);
if (result != null) {
if (result.contains(",")) {
expanded.addAll(Arrays.asList(result.split(",")));
} else {
expanded.add(result);
}
}
}
return this.queryString(name, Collections.unmodifiableList(expanded));
}
}
解決方法
覆蓋 QueryTemplate 類改寫expand方法
public String expand(Map<String, ?> variables) {
String name = this.name.expand(variables);
if (this.pure) {
return name;
} else {
List<String> expanded = new ArrayList();
Iterator var4 = this.values.iterator();
while(var4.hasNext()) {
Template template = (Template)var4.next();
String result = template.expand(variables);
if (result != null) {
// if (result.contains(",")) {
// expanded.addAll(Arrays.asList(result.split(",")));
// } else {
expanded.add(result);
// }
}
}
return this.queryString(name, Collections.unmodifiableList(expanded));
}
}
參考
google到類型問(wèn)題 的人
https://www.gitmemory.com/issue/spring-cloud/spring-cloud-openfeign/146/533275272