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

Mar*_*hov 10 java rest android retrofit

我需要使用Retrofit执行DELETE请求.所以,我的界面代码片段如下所示:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId);
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

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

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

谢谢.

Kon*_*iak 28

要添加的回调作为最后一个参数的请求的方法,如果你想拥有无效的方法.你可以用Callback<Response>.

你必须改变这个:

@DELETE("/api/item/{id}")
void deleteItem(@Path("id") int itemId);
Run Code Online (Sandbox Code Playgroud)

至 :

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

或者你可以回来 Response

@DELETE("/api/item/{id}")
Response deleteItem(@Path("id") int itemId);
Run Code Online (Sandbox Code Playgroud)


Bur*_*rtK 5

在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>() {
...
});
Run Code Online (Sandbox Code Playgroud)

  • 也许我很稠密,但是,哪个响应?OkHttp的回应?改造是模板化的... (2认同)