使用 PATCH 要求改装?
PATCH
我看到了三种方法:
使用 @Body 发送完整对象,同时保留不应更新为 null ,所以GSON会放弃它们:
@Body
null
@PATCH("posts/{id}") Call<Post> patchPost(@Path("id") int id, @Body Post post);
使用 @FormUrlEncoded 并且只传递应该更新的字段,例如 @FieldMap .
@FormUrlEncoded
@FieldMap
@FormUrlEncoded @PATCH("posts/{id}") Call<Post> patchPost(@Path("id") int id, @FieldMap Map<String, String> fields);
定义一个自定义模型类,该类只包含应该更新的字段,因此我们不必将任何设置为 无效的 .
无效的
@PATCH("posts/{id}") Call<Post> patchPost(@Path("id") int id, @Body PostUpdate postUpdate);
我是否错过了其他途径?哪一种最常用?
我通常将JSON与RequestBody(Okhttp)结合使用。JSON对象只包含相关字段。然后我把它转换成身体。如下所示:
@PATCH(RestConstants.POST_EMPTY) Call<EmptyResponseModel> postEmpty(@Body RequestBody body); MediaType MEDIA_TYPE_JSON = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(MEDIA_TYPE_JSON, json.toString()));