如何在改造调用中设置 url 的静态结尾
Posted
技术标签:
【中文标题】如何在改造调用中设置 url 的静态结尾【英文标题】:How to setup the static end of the url in retrofit call 【发布时间】:2021-12-11 02:30:30 【问题描述】:我有一个改造的api接口,但是如何根据参数正确设置它
@GET("/users/profile/User?age=Age&api_key=randomkey")
suspend fun enableVoice(
@Path("User") user: String?,
@Query("age") age: String?
): Response<UserResponse?>
我收到此错误,不知道如何正确设置 api 端
java.lang.IllegalArgumentException: URL query string "age=Age&api_key=randomkey" must not have replace block. For dynamic query parameters use @Query.
请告诉我如何让它运行
【问题讨论】:
【参考方案1】:根据this answer,我认为您需要这样做:
@GET("/users/profile/User")
suspend fun enableVoice(
@Path("User") user: String?,
@Query("age") age: String?,
@Query("api_key") key: String?,
): Response<UserResponse?>
也可以使用@QueryMap
,您可以在其中提供键值对的映射。
@GET("/users/profile/User")
suspend fun enableVoice(
@Path("User") user: String?,
@QueryMap queryParams: Map<String, String>
): Response<UserResponse?>
【讨论】:
【参考方案2】:您无需在 URL 中显式添加查询部分。使用 @Query 注释在方法中传递它会自动将其添加到请求的最终 URL 中。所以你的要求应该是
@GET("/users/profile/User")
suspend fun enableVoice(
@Path("User") user: String?,
@Query("age") age: String?,
@Query("api_key") key: String?
): Response<UserResponse?>
【讨论】:
以上是关于如何在改造调用中设置 url 的静态结尾的主要内容,如果未能解决你的问题,请参考以下文章
如何在静态 UITableView 中设置 detailTextLabel.text?