代码之家  ›  专栏  ›  技术社区  ›  Florian Walther

改造修补单场的最佳实践

  •  0
  • Florian Walther  · 技术社区  · 6 年前

    使用 PATCH 要求改装?

    我看到了三种方法:

    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. 定义一个自定义模型类,该类只包含应该更新的字段,因此我们不必将任何设置为 无效的 .

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

    我是否错过了其他途径?哪一种最常用?

    1 回复  |  直到 6 年前
        1
  •  0
  •   volkanhotur    6 年前

    我通常将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()));