RetroFit 复杂查询参数

RetroFit Complex Query Parameters

我需要从 RetroFit 生成以下查询字符串。我知道我可以很容易地重复查询元素。只需要对其进行格式化,使每个元素的形式为 assessment[id][points]=parameter

//Assume Assessment contains the id and the parameter
@PUT("url")
Call putElements(@Query(???) Assessment... assessmentIds);

示例输出: https://baseurl.com/url?assessment[id1][points]=3&assessment[id2][points]=5

在 RetroFit 中是否有一种干净的方法来完成此操作?

是的,您正在寻找 @QueryMap

您将像这样使用它:

// sender
Map<String,String> parameters = new HashMap<>();
parameters.add("assessmentid1points", "3");
parameters.add("assessmentid2points", "5");
parameters.add("key3", "value3");

yourObject.putElements(parameters);

// receiver interface
@PUT("url")
Call putElements(@QueryMap Map<String,String> parameters);

我已经写了一些关于 Retrofit 1 和 2 的教程,如果你想查看它们,here