@Retention(value=RUNTIME)
@Target(value=PARAMETER)
public @interface QueryParam
Named query parameters appended to a URL.
Example#1:
@GET("subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/resources")
Single<RestResponse<Headers, Body>> listByResourceGroup(@PathParam("resourceGroupName") String resourceGroupName, @PathParam("subscriptionId") String subscriptionId, @QueryParam("$filter") String filter, @QueryParam("$expand") String expand, @QueryParam("$top") Integer top, @QueryParam("api-version") String apiVersion);
The value of parameters filter, expand, top, apiVersion will be encoded and encoded value will be used to replace the corresponding path segment {$filter},
{$expand}, {$top}, {api-version} respectively.
Example#2 (A use case where PathParam.encoded=true will be used)
It is possible that, a path segment variable can be used to represent sub path:
@GET("http://wq.com/foo/{subpath}/values")
String getValues(@PathParam("subpath") String param, @QueryParam("connectionString") String connectionString);
In this case, if consumer pass "a=b" as the value for query then the resolved url looks like: "http://wq.com/foo/paramblah/values?connectionString=a%3Db"
For such cases the encoded attribute can be used:
@GET("http://wq.com/foo/{subpath}/values")
String getValues(@PathParam("subpath") String param, @QueryParam("query", encoded = true) String query);
In this case, if consumer pass "a=b" as the value for param1 then the resolved url looks as expected: "http://wq.com/foo/paramblah/values?connectionString=a=b"