通过 Retrofit 中的 Model 类在 GET 请求 URL 中传递 ID

Posted

技术标签:

【中文标题】通过 Retrofit 中的 Model 类在 GET 请求 URL 中传递 ID【英文标题】:Passing ID in GET request URL through Model class in Retrofit 【发布时间】:2019-04-05 09:43:55 【问题描述】:

这是删除记录的API URL

GET : localhost:4000/course/delete/5bd9a270c6a31620e0b7b3d8

5bd9a270c6a31620e0b7b3d8 是服务器和模型类中的 ID。我想调用一个 API 并将其动态传递给 url 以删除记录。

如何编写接口调用请求

@GET("course/delete/?id?") //how to write
Call<List<Course>> deleteRecords();

我们将不胜感激

【问题讨论】:

id是查询参数还是路径? square.github.io/retrofit/2.x/retrofit/index.html?retrofit2/… 如何找到。我是新手。该网址的邮递员链接工作正常 【参考方案1】:

去做吧:

@GET("course/delete/id")
Call<List<Course>> deleteRecords(@Path("id") String id);

然后调用:

retrofit.deleteRecords("5bd9a270c6a31620e0b7b3d8");

【讨论】:

感谢您的回复。但我收到此错误 java.lang.IllegalArgumentException:@Path 参数名称必须匹配 \([a-zA-Z][a-zA-Z0-9_-]*)\。找到:_id(参数#1)我是通过这个来调用的。 Call> call = serviceRetro.deleteRecords(id); 在调试中我已经检查过了。 id 正确获取值 只需将@Path("_id") 替换为@Path("id") 用于deleteRecords 方法中的参数即可。 完美运行。谢谢!【参考方案2】:

试试这个definition

@GET("course/delete/id")
Call<List<Course>> deleteRecords(@Path("id") String id));

【讨论】:

以上是关于通过 Retrofit 中的 Model 类在 GET 请求 URL 中传递 ID的主要内容,如果未能解决你的问题,请参考以下文章

Retrofit Parsing中的url没有响应

结构中的快速类在分配期间是不是通过副本传递?

通过 QWidget 类在 QML 中的事件处理程序

如何通过 android 中的改造从 php 中检索“字符串响应”?

Android:Retrofit中的Converter

flutter 使用retrofit