事先,我不是在谈论内容协商。让我们假设我有一个简单的JPA实体,顺便说一下,它可以与相关的DTO转换,这并不重要。
@Entity
public class User {
...
private String email;
private String password;
...
}
我有一个RESTful控制器,有两个不同的路由,一个是安全的,一个是公共的。
@RestController
public class UserController {
...
@GetMapping("/public")
private User publicRoute() {
return service.getLatestUser();
}
@Secured("...")
@GetMapping("/private")
private User privateRoute() {
return service.getLatestUser();
}
}
对于这两条路由,返回相同的实体,但在第一种情况下,应该返回公共表示,比如对于用户配置文件,不返回电子邮件和密码等敏感内容。然而,在第二种情况下,需要一个私人代表,比如说所有者本身。
有什么优雅的方法可以做到这一点吗?我用@JsonIgnore
在JSON级别上尝试了它,但它对我不起作用。我还尝试使用Response
-对象,但它会产生大量样板代码!有什么建议吗?
另请参见:由Ananthapadmanabhan推荐关于此主题已经存在一些问题/资源:
问题:
告诉我你觉得这个解决方案怎么样?
如果对象不是最终私有用户ignoreEmailAndPass(用户用户){User usr=new User();usr.setName();//仅发送必填字段,则可以编写自己的方法。}
您可以从两个endpoint返回不同的DTO对象,而不是返回相同的实体类,这样您就可以控制响应中应该包含哪些属性。
在这里阅读使用DTO的优点。
另一种方法是为终结点自定义序列化器和反序列化器。你可以在这里阅读更多细节。还有这里
有些接口没有被开放,但是也想要通过网关来访问,SOP提供一个固定的请求格式来访问。 请求格式: http://ip:port/rest/服务id/your_path,其中http://ip:port/rest/为固定部分,后面跟微服务请求路径。 下面是一个微服务的接口例子 @RestController @RequestMapping("food") public class Traditiona
问题内容: 我正在尝试将Entity Framework与MySQL配合使用,但出现上述错误。我安装了最新的MySQL连接器。 完整错误为: 但是,我找不到任何建议说明您如何在“ entityFramework”部分中进行注册的内容。 其他一些帖子(例如)建议将提供程序添加到该 部分中,如下所示: 但这不起作用,因为它声称名称是重复的。而且,如果我实际上遍历了,我可以看到最后一个是MySQL提供程
我得同时更新三张表。当我从邮递员点击时,所有表都成功保存了,但当我尝试更新时,它抛出了catch异常,就像同一个实体的多个表示一样。 EmployeeDetails InvalidDataAccessapiUsageException:正在合并同一实体[com.icore.payroll.attendance.entity.EmployeeDetails#379]的多个表示形式。已分离:[Empl
有许多文章指出在JPA/hibernate中不需要使用DTO 使用“在视图中打开会话”模式或严格的程序集阶段来避免未蚀刻数据的问题。Hibernate使开发人员不再编写繁琐的数据传输对象(DTO)。。。以上几行来自https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/best-practices.html 同样在SO成员Bohzo的一
我试图使用spring JPA repository和entity graph加载实体的惰性属性,EntityGraph不是动态获取提供的关系,而是根据entity中为该属性定义的静态获取类型获取属性。 使用hibernate-5.2.17.Final,Spring-4.3.20.RELEASE,Spring数据JPA-1.11.22.RELEASE
我的应用程序需要存储一组与另一个“真实”表具有相同数据库结构的“暂存数据”,但在人工查看暂存数据的内容之前,不能将其写入真实表。这些不仅是对实际表的添加,而且是对它的更新(因此,换句话说,在staging table中,有一些值与实际表具有相同的主键,因为它们引用了相同的实体实例)。 我的方法是让两个JPA对象具有相同的结构(即字段、列名等),但存储在不同的表中,并与Spring透视图完全分开处理