You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用Retrofit如何调用带多排序参数的API?

遇到这种多排序键的API调整很常见,我来帮你改一下代码适配新的需求。

首先,你的API现在要求多个sort查询参数,每个参数值是字段名,排序方向的格式(比如sort=startTime,desc),而你原来的代码把排序字段和方向拆成了两个独立参数,这显然和新的API格式不匹配了。

直接改造你的Retrofit接口方法就行,步骤如下:

  • 把原来的@Query("sort") String sort和@Query("desc") String desc这两个参数删掉,换成一个接收排序规则列表的参数@Query("sort") List<String> sortList。Retrofit for Dart会自动把这个列表展开成多个sort=xxx的查询参数,正好符合你给出的URL示例格式。

修改后的接口代码应该是这样:

@GET('contents')
Future<HttpResponse<ContentList>> getContents(
    @Query("page") int page,
    @Query("size") int size,
    @Query("sort") List<String> sortList,
);

调用的时候,只需要把所有排序规则以"字段名,方向"的字符串形式放进列表里就行,比如你需要按startTime降序、id降序排序:

final response = await yourApiInstance.getContents(
  page: 0,
  size: 20,
  sortList: ["startTime,desc", "id,desc"],
);

这样生成的URL就会是https://example.com/contents?page=0&size=20&sort=startTime,desc&sort=id,desc,完全符合API的新要求。如果之后需要调整排序规则,只要修改列表里的元素就行,非常灵活。

内容的提问来源于stack exchange,提问作者Rokon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:28:12