英文:
spring boot: sending data to 1 endpoint but hiding from other
问题
我有一个简单的Spring Boot应用程序,我的模型包含3个字段。控制器暴露了2个端点/e1和/e2。我想实现的目标是,当调用/e1时,我希望返回模型中的所有3个字段,但当调用/e2时,我希望只返回2个字段,并将第3个字段从中隐藏。
有没有方法可以做到这一点,应该如何实现?谢谢。
英文:
I have a simple spring boot application, my model contains 3 fields. and controller exposes 2 endpoints /e1 and /e2. what I want to achieve is that when /e1 is called I want to return all 3 fields from my model by when /e2 is called I was to return just 2 fields and hiding the 3rd field from it.
is there a way to do it and how this can be done ? thanks
答案1
得分: 0
首先,您应该始终拥有2个类 - 实体和其DTO表示 - 即使它们的字段非常相似。这给您带来了以下好处:
- 与外部消费者的独立性,您可以在将来更改模型,但契约保持不变
- 利用Hibernate延迟加载的优势的机会
- 轻松解决您的问题:只需有2个DTO,一个带有所有字段,另一个不带隐藏字段。
您可能需要bean映射器来将实体转换为DTO。
英文:
First, you should always have 2 classes - entity and its dto presentation - even if they fields are very similar. This gives you:
- independcy from external consumers, you may change your model in future but the contract remains the same
- opportunity to use advantages of Hiberante laze loading
- easily solve your issue: just have 2 DTOs, one with all fields, other one without hidden field.
You might need bean mapper for converting entity to DTO.
答案2
得分: 0
两种解决方案,您可以尝试其中之一:
- 创建两个POJO类,一个带有3个字段,另一个带有2个字段,并根据需要返回。
- 如果您不想要单独的POJO类,那么可以在一个POJO中设置所有3个字段的值,当调用/e2时,遍历它并显式地清除您想要隐藏的值。
英文:
Two solutions you can try either of them ..
- Create two POJO's One with 3 field and another with 2 fields and return accordingly.
- If you dont want separate pojo then set value of all 3 fields in pojo and when /e2 called, iterate over it and explicitely blank out that value which you want hide.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论