如何在Retrofit中为URL查询参数正确使用@Query注解?
问题解决:Retrofit正确传递查询参数
你的问题出在混淆了**路径参数(@Path)和查询参数(@Query)**的用法:id_ruta是URL中?后的查询参数,不是路径里的占位符,所以用@Path注解不会生效。
正确实现方式
方式一:固定key参数,仅传递id_ruta
把固定的key直接拼接在@GET的路径后,用@Query传递动态的id_ruta:
@GET("Ruta/get_pax_ruta?key=5786938888") suspend fun getRouteDetails( @Query("id_ruta") idRuta: String ): RouteDetailsModel
方式二:key也设为可配置参数(带默认值)
如果后续key可能需要调整,可以把它也设为@Query参数并指定默认值:
@GET("Ruta/get_pax_ruta") suspend fun getRouteDetails( @Query("id_ruta") idRuta: String, @Query("key") key: String = "5786938888" ): RouteDetailsModel
原理说明
- @Path:用于替换URL路径中的占位符(例如
Ruta/{id}/get_pax里的{id}) - @Query:用于生成URL中
?后的查询参数(即key=value形式的参数)
你之前的写法把查询参数当成路径参数处理,导致Retrofit无法正确解析参数,所以请求不生效。
内容的提问来源于stack exchange,提问作者Taki
相关产品推荐
相关产品推荐

