Micronaut Http Client如何使用Map传递查询参数?
Micronaut客户端传递Map类型查询参数的解决方案
Micronaut支持传递Map类型的查询参数,无需使用类似Retrofit的@QueryMap注解,直接用@QueryValue修饰Map参数即可实现需求。
基础实现示例
Kotlin代码示例
@Client("MyApi") interface Zoo { fun fetchAnimals(@QueryValue queryParams: Map<String, String>): String }
功能说明
调用该方法时,Map中的每一组键值对会自动转换为URL的查询参数。例如传入mapOf("color" to "red", "type" to "dog"),最终生成的请求URL会包含:?color=red&type=dog
处理多值查询参数
如果需要传递同一参数名对应多个值的场景(比如?color=red&color=blue),可以使用Micronaut提供的MultiValueMap替代普通Map:
import io.micronaut.core.convert.value.MultiValueMap @Client("MyApi") interface Zoo { fun fetchAnimals(@QueryValue queryParams: MultiValueMap<String, String>): String }
调用时传入MultiValueMap.of("color", listOf("red", "blue")),即可生成包含多值的查询参数。
额外配置说明
- 若希望Map参数作为带前缀的查询参数,可在
@QueryValue中指定前缀,比如@QueryValue("filter") queryParams: Map<String, String>,此时生成的参数格式为filter[color]=red(具体格式可通过Micronaut配置调整)。 - 确保Map的键值对为可序列化的基础类型,避免因复杂对象导致参数转换失败。
内容的提问来源于stack exchange,提问作者Kurt
相关产品推荐
相关产品推荐

