Retrofitを使用して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では、以下のようにリクエストの結果に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);