Java Retrofit2 POST JsonObject的良好做法?

我想在我的Java应用程序中使用REST API.对于我的电话,我使用Retrofit2.通常,我必须发布对象,而该对象只需要一次,所以我问自己是否真的应该添加其他类.

 

(例如UserCreate)仅用于创建新资源(因为通常我收到的对象与创建相同类型资源所需的对象完全不同)

在这种情况下,可以使用com.google.gson.JsonObject.这使我能够创建不需要其他类的Json对象.

例如:

 

JsonObject obj = new JsonObject();
obj.addProperty("foo", "bar");
Call<Something> call = caller.createSomething(obj);

>在这里使用JsonObject被认为是“良好实践”吗?是否有比创建多个类更好的选择?
>我完全错了吗?创建单独的课程是做我想做的最好的方法吗?
>使用JsonObject时是否会降低性能?

最佳答案

此问题仅对Retrofit2无效.我每天都在使用Spring和JAX-RS,有时我问自己,创建所有这些简单的类(我承认有时它们会变得非常复杂)是否是个好主意.

 

无论如何,对此没有普遍的回应.在API设计方面,无论是客户端还是服务器端,开发人员都有不同的喜好和偏好.

但是,具有描述请求正文或响应正文格式的Java类非常有用.如果这些类遵守命名约定(例如,附加* Request或* Response),并且它们收集在特定的有意义的程序包中,则随着时间的推移,它们将使您的同事的生活更加轻松.

使用Java类意味着使您的API接口更加健壮,因为编译器将帮助您在编码时发现问题.另一方面,通过使用无类型的JsonObject(或您将使用的Json库提供的任何对象),您需要更加小心.

使用Java类,您还可以利用多态和构造模式.您可以按接口而不是具体对象进行编码.

某些将API暴露给外界的服务也可能会为您提供包含预编译类的Jar文件,这些文件将包含在类路径中.

回答您的第三点,使用Gson手动构造一个JsonObject并比通过RequestBody提交它不会造成性能损失.请记住,将Java DTO用作@Body时,有一个序列化过程,由Gson负责.从性能的角度来看,手动构造JsonObjects也可能更好.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值