post方法requestbody中传递实体对象可以吗?

问题描述 投票:0回答:2

我有一个 Springboot Rest 项目。假设我有 User 类作为实体。直接在POST方法的RequestBody中传递这个实体对象可以吗?我的功能将与此顺利配合。我的问题是,这是否是一个安全漏洞?如果是,解决方案是什么?

rest spring-boot spring-data-jpa http-post
2个回答
1
投票

这会工作得很好并且是一个简单的实现,但从架构上来说这不是一个好的实践,因为这将你的其余实现与数据库设计紧密耦合并将其暴露给 API 的使用者。

您应该让请求/响应对象进入您的 api 并从中退出,将其与数据库解耦,并允许您在数据访问之上的层执行验证和其他业务规则。如果您发现必须在实体和 dtos 之间编写大量分配代码,那么您可以使用像 http://modelmapper.org/http://mapstruct.org/

这样的工具

0
投票

您不应该向用户公开关键数据。话虽这么说,如果您不想为每个实体创建单独的 DTO,您可以使用

Jackson Annotations
(如
@JsonIgnore
)来定义您希望接收或向用户显示的实体字段(考虑到您有休息应用)。

因此,只要不暴露关键数据,您就可以随心所欲地进行操作,但创建 DTO 被认为是一种很好的做法。

© www.soinside.com 2019 - 2024. All rights reserved.