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

如何使用Refit生成带[]后缀的重复集合参数的HTTP请求?

如何使用Refit生成带[]后缀的重复集合参数的HTTP请求?

我太懂你这种踩坑的感觉了!之前折腾类似需求时也卡了好一会儿,你要的/users/list?ages[]=10&ages[]=20&ages[]=30这种格式,其实通过给Query属性设置正确的参数就能实现,先给你看可行的代码:

using Refit;

public interface IUserApi
{
    [Get("/users/list")]
    Task Search([Query(Name = "ages[]", CollectionFormat = CollectionFormat.Multi)] int[] ages);
}

给你拆解下之前尝试没成功的原因:

  • 第一种写法只加了CollectionFormat.Multi,但没指定参数名要带[],Refit默认用参数变量名ages作为键,自然就没有后缀了
  • 第二种误用了Format属性,这个属性根本不是用来定义参数名称的,所以才会生成奇怪的ages=ages[]=10这种格式

上面的正确写法里:

  • Name = "ages[]"直接把参数键指定为带后缀的形式
  • CollectionFormat.Multi告诉Refit要为数组的每个元素重复这个键(也就是每个元素都生成ages[]=值的片段)

另外补充个小细节:如果你的Refit版本比较新,CollectionFormat.Multi其实是数组类型参数的默认集合格式,所以你甚至可以省略这个参数,直接写[Query(Name = "ages[]")] int[] ages也能得到一样的效果,不过保险起见还是写上更清晰,避免不同版本的行为差异。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 11:43:05