Android端Retrofit2向Spring REST服务传递路径参数失败求助
问题解决:Retrofit2 与 Spring 路径参数不匹配的问题
嘿,我一眼就看出问题所在啦!
你的 Spring 接口里用的是路径变量(Path Variables)——也就是 URL 路径里的{branchID}和{docID},这类参数是直接嵌入到 URL 路径中的。但你在 Retrofit 代码里误用了@Query注解,这个注解是用来生成查询参数的(也就是 URL 末尾?key=value形式的参数),两者完全不匹配,所以请求自然无法被 Spring 正确解析。
正确的 Retrofit 写法
把@Query换成@Path注解就可以了,它专门用来处理路径变量:
@GET("/allData/{branchID}/{docID}") Call<List<User>> getUserData( @Path("branchID") int branchID, @Path("docID") Long docID );
额外说明
- 确保
@Path括号里的名称和 URL 占位符{}里的名称完全一致(比如这里的branchID和docID),如果参数名和占位符名不同,你可以显式指定,比如@Path("branch_id") int branchId。 - 这样修改后,Retrofit 会自动把参数值替换到路径占位符中,生成类似
/allData/101/10001的请求,完美匹配你的 Spring 接口。
内容的提问来源于stack exchange,提问作者Bellal Hossain
相关产品推荐
相关产品推荐

