具有多个构造函数的 Java 改造类与多个类

标签 java express retrofit2

我想将 REST API 与 java 应用程序结合使用。 当我开始设计程序时,一切都很好,但现在我面临一个大问题:

例如,我的用户类具有 id、余额、名称等属性。 当我通过发送 POST 请求创建新用户时,不需要 id 和余额等属性。

这让我想到了一个问题:

  • 我是否应该将不同的对象(如 UserCreate,仅具有创建新用户所需的属性)发布到 API 并接收完整的 User 对象?

或者

  • 我是否应该向我的 User 对象添加另一个构造函数,该构造函数只需要所有必需的参数(名称)?

我相信在这种情况下,额外的构造函数可能被认为是很好的做法,但是如果发布需要一组完全不同的属性怎么办? (未包含在我的用户类中的属性)

(另一种方法是使用 Object(),但不知怎的,这不起作用(Express 说,它是一个 http 400)。在 Retrofit2 中是否有可能在 Post 请求中发送匿名对象?)

最佳答案

首先,您的 Java 应用程序应考虑所有所需的操作,例如创建、更新、删除。这些粗略地通过 HTTP 方法 PUTPATCHDELETE 相应地进行标识。

现在,前端发送到 Java 后端的 DTO 表示形式 (JSON/XML/REST) 在每种情况下都可以相同:CREATE、UPDATE 和 DELETE。您的后端应该为上面列出的 HTTP 方法实现上述功能。您从前端发送到后端的 DTO(可能名为 UserDTO)在所有情况下都可以相同。在此 DTO 中,您可以将所有不相关(与操作无关)的字段保留为未设置/空。

更详细:您的后端应该有接受 HTTP 方法的方法:

  • PUT,其中 DTO 具有除 Id 之外的所有其他所需字段
  • PATCH,其中 DTO 具有 Id 字段和所有已更改字段
  • DELETE,其中 DTO 仅具有 Id

我不知道您使用的框架如何从您发送的 DTO 构造实际的 POJO。但现在您有了这三种方法,您实际上知道如何处理传入的 DTO,即您知道它是 CREATE、UPDATE 还是 DELETE。

因此,如果您需要自己构造 POJO,则需要 CREATE 的构造函数,对于更新很难说,也许您需要获取原始用户并逐个字段更新它,而对于删除,实际上 id 应该足以删除用户。

but what if posting would require a set of completely different attributes? (attributes that are not included in my user class)?

这似乎是一个 HTTP POST。因此,它不是创建、更新或删除操作,而是基于某些任意操作和数据来更改状态(可能是用户)的操作。当然,对于不在 User 中的数据,您需要其他一些 DTO 来保存该数据。

关于具有多个构造函数的 Java 改造类与多个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54725081/

相关文章:

java - 我如何验证它,以便下面的前 3 位数字范围为 100-300(含),后 3 位数字范围为 001-999(含)

node.js - Mocha/ super 测试在测试完成后不退出

node.js - 如何在connect-pg-simple中指定连接字符串?

android - 无法在 HttpLoggingInterceptor Retrofit 2.0 上解析 setLevel

android - 如何通过改造 2 发布请求并获得响应?

android - 尽管有 rawResponse,errorBody() 在 Retrofit2 中返回 null

java - java和android上的socket编程

模拟一本书的 Java 类

java - JTable + 排序特定字段

node.js - 如何使用nodejs、express和mongoose在一个函数中保持两个操作的一致性