FeignClient pageable sort 無(wú)法desc

客戶端:

image.png

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

服務(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容