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

How to perform a DELETE request without return type or Callback? [Retrofit]

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

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

但是我得到错误:

java.lang.IllegalArgumentException: ApiItem.deleteItem: Must have either a return type or Callback as last argument.

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

谢谢。

必须添加 Callback 作为请求方法中的最后一个参数,如果你想有 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);

或者你可以 return Response

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

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

@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