2017-05-09 92 views
2

這是我的界面。Feign客戶端不解析查詢參數

public interface SCIMServiceStub { 

    @RequestLine("GET /Users/{id}") 
    SCIMUser getUser(@Param("id") String id); 

    @RequestLine("GET /Groups?filter=displayName+Eq+{roleName}") 
    SCIMGroup isValidRole(@Param("roleName") String roleName); 

} 

這裏getUser調用工作正常。但isValidRole無法正常工作,因爲請求最終會像這樣發送。

/Groups?filter=displayName+Eq+{roleName}" 

這裏{roleName}沒有解決。我在這裏錯過了什麼?感謝一些幫助,因爲我在這一點上毫無頭緒。

編輯:1更多問題:有沒有辦法避免查詢參數的自動url編碼?

回答

1

這似乎是由已打開的錯誤造成的 - https://github.com/OpenFeign/feign/issues/424

就像在評論,你可以這樣定義下面你自己的東西Param.Expander作爲一種解決方法。

@RequestLine("GET /Groups?filter={roleName}") 
String isValidRole(@Param(value = "roleName", expander = PrefixExpander.class) String roleName); 

static final class PrefixExpander implements Param.Expander { 
    @Override 
    public String expand(Object value) { 
     return "displayName+Eq+" + value; 
    } 
} 
+0

非常感謝.. – Bee