在 Spring Boot 中将一组 ID 或一组对象作为 DTO 中的数据传递?
Passing a set of IDs or a set of objects as data in a DTO in Spring Boot?
我正在尝试创建一个项目管理应用程序,对于我的后端,我有一个项目实体,它与用户实体存在多对多关系。我有以下 DTO:
public class ProjectDto implements Serializable {
private final Long id;
private final String name;
private final String description;
private final Date createdAt;
private final Date updatedAt;
private final Set<UserDto> users;
}
在我的 ProjectService 中,我想要一个方法来创建一个项目,该项目分配有任何已发送的用户。但是,我的问题是我的前端应该向我的后端发送一组用户对象还是发送一组我想分配给这个项目的用户的 ID 更好?在创建项目时实际返回此 DTO 并在我想创建项目时使用另一个带有一组用户 ID 的 DTO 不是更好吗?
您不能信任来自 front-end 的数据,您需要对请求正文应用验证,包括 Set<UserDto> users
,并且要验证 users
,您必须从 DB (或其他来源)。
使用 Set<?> userIds
也需要从数据库中获取,但您不必添加更多代码来验证 DTO,并且验证 ID 更简单且易于维护。使用 userIds
也是为了确保设置为 project
的 users
是从数据库中获取的实体。它还使 FE 代码更简单(我希望),因为不必构建 (DTO) 对象
我正在尝试创建一个项目管理应用程序,对于我的后端,我有一个项目实体,它与用户实体存在多对多关系。我有以下 DTO:
public class ProjectDto implements Serializable {
private final Long id;
private final String name;
private final String description;
private final Date createdAt;
private final Date updatedAt;
private final Set<UserDto> users;
}
在我的 ProjectService 中,我想要一个方法来创建一个项目,该项目分配有任何已发送的用户。但是,我的问题是我的前端应该向我的后端发送一组用户对象还是发送一组我想分配给这个项目的用户的 ID 更好?在创建项目时实际返回此 DTO 并在我想创建项目时使用另一个带有一组用户 ID 的 DTO 不是更好吗?
您不能信任来自 front-end 的数据,您需要对请求正文应用验证,包括 Set<UserDto> users
,并且要验证 users
,您必须从 DB (或其他来源)。
使用 Set<?> userIds
也需要从数据库中获取,但您不必添加更多代码来验证 DTO,并且验证 ID 更简单且易于维护。使用 userIds
也是为了确保设置为 project
的 users
是从数据库中获取的实体。它还使 FE 代码更简单(我希望),因为不必构建 (DTO) 对象