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

Retrofit发起无键值对GET请求:避免?前缀导致404错误

Retrofit GET请求路径参数配置问题解决办法

你这问题很典型——用错参数注解啦!@QueryName是用来生成查询参数(就是URL里?后面的内容)的,所以才会出现example.com/product_barcode/?12345678997455这种带?的URL,而你需要的是把barcode作为路径的一部分,这时候得用@Path注解配合路径占位符来实现。

具体改法如下:

  1. 先修改@GET的路径,加入占位符{barcode},标记参数要替换的位置
  2. 把参数的注解从@QueryName换成@Path("barcode"),和路径里的占位符对应上

完整的接口代码应该是这样的:

public interface Api {
    String PRODUCT_BARCODE = "product_barcode/{barcode}";

    @GET(PRODUCT_BARCODE)
    Single<Data> getProductData(@Path("barcode") String barcode);
}

这样配置后,当你传入12345678997455作为barcode参数时,Retrofit就会生成你想要的URL:example.com/product_barcode/12345678997455,不会再带?前缀啦。

简单区分下两个注解的用途:

  • @Path:用来替换URL路径中的占位符,参数直接嵌入路径
  • @Query/@QueryName:用来生成?开头的查询参数,和你当前的需求不匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:27:42