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也可能更好.

相关文章

本文从从Bitcask存储模型讲起,谈轻量级KV系统设计与实现。从...
内部的放到gitlab pages的博客,需要统计PV,不蒜子不能准确...
PCM 自然界中的声音非常复杂,波形极其复杂,通常我们采用的...
本文介绍如何离线生成sst并在线加载,提供一种用rocksdb建立...
验证用户输入是否正确是我们应用程序中的常见功能。Spring提...
引入pdf2dom &lt;dependency&gt; &lt;groupId&a...