春季启动:将数据发送到1个端点,但对其他端点隐藏

问题描述

我有一个简单的spring boot应用程序,我的模型包含3个字段。控制器公开2个端点/ e1和/ e2。我想要实现的是,当调用/ e1时,我想从模型中返回所有3个字段,而当调用/ e2时,我只返回2个字段,并从中隐藏第3个字段。

有没有一种方法可以做到这一点?谢谢

解决方法

首先,您应该始终有2个类-实体及其dto表示形式-即使它们的字段非常相似。这给您:

  • 独立于外部消费者,您将来可能会更改型号,但合同保持不变
  • 利用Hiberante懒散加载优势的机会
  • 轻松解决您的问题:只有2个DTO,一个DTO具有所有字段,另一个DTO没有隐藏字段。

您可能需要bean mapper才能将实体转换为DTO。

,

您可以尝试其中两种解决方案..

  1. 创建两个POJO,其中一个包含3个字段,另一个包含2个字段,并相应地返回。
  2. 如果您不想单独使用pojo,请在pojo中设置所有3个字段的值,并在/ e2调用时对其进行迭代,并显式地清空要隐藏的值。