我有一个带有 Jersey REST 端点的 Java Web 服务,该端点以 JSON 对象的形式返回 Restaurant POJO 列表(请参阅下面的 Restaurant 类)。端点看起来像这样
/api/restaurants
并返回与 Restaurant 类相关的所有数据。但是,我想添加另一个更精简的端点,如下所示
/api/restaurants/name
它仅返回所有餐厅的 Restaurant POJO 的 id
和 name
。有没有一种很好的方法可以在 Jersey 中开箱即用地执行此操作(例如,为特定端点指定 POJO 中所需的字段)?
相应的 POJO 看起来像这样:
@XmlRootElement
public class Restaurant {
// Members
private Long id;
private String name;
private List<Menu> menus;
...
// Constructors
public Restaurant() {}
...
// Getters and setters
...
}
如果您还有其他需要,请随时告诉我!谢谢!
最佳答案
是的,Jersey 支持选择序列化 XML/JSON 中包含的元素。看看entity filtering手册部分。
本质上,您可以使用自定义注释在 POJO 中注释特定的 @XmlElements。在 REST 资源中,您在构建响应时将注释传递给 Jersey。
请注意,这仅在您使用 EclipseLink MOXy 作为 JAXB 提供程序时才有效。
关于java - 如何在 Jersey REST api 中返回部分实体/POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21288922/