FeignClient pageable sort 無法desc

客戶端:

image.png

GET http://product/products?search=status%3D%3DON%3Bcategories.id%3D%3Dff8080817495c0cf017495c28b0e0000&page=0&size=12&sort=price&sort=DESC

服務端:

image.png

問題

在url生成的排序,好像不大對

生產了錯誤的查詢
sort=price&sort=DESC

正確的為
sort=price,DESC

過程

通過跟蹤 PageableSpringEncoder 組成查詢參數也沒啥問題


image.png

sort=price,DESC 非常的正常,那就代表,在之后給弄壞了

找到發生變化的地方
ReflectiveFeign
this.buildTemplateFromArgs.create(argv)

問題

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到類型問題 的人
https://www.gitmemory.com/issue/spring-cloud/spring-cloud-openfeign/146/533275272

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容