如何在没有返回类型或回调的情况下执行 DELETE 请求?[改造]



我需要使用改造执行删除请求。因此,我的界面代码片段如下所示:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId);

但是我得到错误:

java.lang.IllegalArgumentException: ApiItem.deleteItem: 必须有 返回类型或回调作为最后一个参数。

但是,根据 Rest API 的规则,我不应该收到对 DELETE 请求的任何响应。我应该如何在界面中指定它?

谢谢。

如果你想有 void 方法,你必须在请求方法中添加回调作为最后一个参数。您可以使用Callback<Response> .

您必须更改此设置:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId);

自:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId, Callback<Response> callback);

或者你可以只返回Response

@DELETE("/api/item/{id}")
Response deleteItem(@Path("id") int itemId);

在 Retrofit 2.0 中,您可以使用调用接口来获取请求的结果,如下所示。

@DELETE("/api/item/{id}")
Call<Response> deleteItem(@Path("id") int itemId);
...
Call<Response> call = YourServiceInstance.deleteItem(10);
call.enqueue(new Callback<Response>() {
...
});
@FormUrlEncoded
@HTTP(method = "DELETE", path = "manage-feed", hasBody = true)
Call<ResponseBody> deletePost(@Field("post_id") Integer postId, @Field("share_id") Integer sharedMapId);
    @HTTP(method = "DELETE", path = "/api/item/{id}", hasBody = false)
fun deleteItemId(
@Path("id") id: Int
) : Call<YourResponse>
hasBody = 
true -> if api has request body
false -> if api has not a request body

最新更新