如何在没有 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
我需要使用 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