gpt4 book ai didi

Java Retrofit2 POST JsonObject 好的做法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:12 25 4
gpt4 key购买 nike

我想在我的 Java 应用程序中使用 REST API。对于我的电话,我使用 retrofit2。通常,我必须 POST 对象,我只需要一次,所以我问自己是否真的应该添加一个额外的类。

(例如 UserCreate)只是为了创建新资源(因为我经常收到与创建相同类型资源所需的对象完全不同的对象)

替代方法是在这种情况下使用 com.google.gson.JsonObject。这使我能够创建不需要额外类的 Json 对象。

例如:

JsonObject obj = new JsonObject();
obj.addProperty("foo", "bar");
Call<Something> call = caller.createSomething(obj);
  • 在这里使用 JsonObject 是否被视为“良好做法”?有比创建多个类更好的选择吗?

  • 我是不是完全错了,创建一个单独的类是完成我想做的事情的最佳方式吗?

  • 我在使用 JsonObject 时会降低性能吗?

最佳答案

此问题仅对 Retrofit2 有效。我每天都使用 SpringJAX-RS 工作,有时我问自己创建所有这些简单的类(好吧,有时它们会变得非常复杂,我承认)是否是个好主意还是不是。

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

但是,使用描述请求主体响应主体 格式的 Java 类非常有用。如果这些类遵循命名约定(例如附加 *Request*Response),如果它们被收集在特定的、有意义的包中,它们将使您的合作随着时间的推移, worker 的生活会更轻松。

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

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

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


回答你的第三点,使用 Gson 手动构建一个 JsonObject 并通过 RequestBody 提交它不会导致性能损失。请记住,当使用 Java DTO 作为 @Body 时,有一个由 Gson 负责的序列化过程。从性能的角度来看,手动构建 JsonObject 也可能更好。

关于Java Retrofit2 POST JsonObject 好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54735224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com