修改PATCH单个字段的最佳实践



在Reform中,用PATCH请求更新JSON资源的单个字段最常见、最合适的方法是什么?

我看到了3种方法:

  1. 使用@Body发送完整对象,同时将不应该更新的字段保留为null,因此GSON将删除它们:

    @PATCH("posts/{id}")
    Call<Post> patchPost(@Path("id") int id, @Body Post post);
    
  2. 使用@FormUrlEncoded,只传递应该更新的字段,例如使用@FieldMap

    @FormUrlEncoded
    @PATCH("posts/{id}")
    Call<Post> patchPost(@Path("id") int id, @FieldMap Map<String, String> fields);
    
  3. 定义一个只包含应该更新的字段的自定义模型类,这样我们就不必将任何内容设置为null

    @PATCH("posts/{id}")
    Call<Post> patchPost(@Path("id") int id, @Body PostUpdate postUpdate);
    

我是否错过了其他方式?哪一种是最常用的?

我通常将JSON与RequestBody(Okhttp(一起使用。JSON对象只包含相关字段。然后我将其转换为RequestBody。如下所示:

@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()));

相关内容

  • 没有找到相关文章

最新更新