java - 如何在 Jersey REST api 中返回部分实体/POJO

标签 java rest jersey jackson

我有一个带有 Jersey REST 端点的 Java Web 服务,该端点以 JSON 对象的形式返回 Restaurant POJO 列表(请参阅下面的 Restaurant 类)。端点看起来像这样

/api/restaurants

并返回与 Restaurant 类相关的所有数据。但是,我想添加另一个更精简的端点,如下所示

/api/restaurants/name

它仅返回所有餐厅的 Restaurant POJO 的 idname。有没有一种很好的方法可以在 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/

相关文章:

java - Jersey JAX-RS + Spring 安全应用程序示例

java - 基于条件的依赖注入(inject)

java - JSON值类型是否需要严格定义?

web-services - 使用 JQuery ajax 访问 POST Web 服务

web-services - REST 中的集合和商店有什么区别?

java - Spring 启动休息 api : how to respond gracefully if Request Body is sent in incorrect format?

java - 将 DBObject 转换为 JSON

java - 使用MATLAB的Android微妙内存泄漏分析

Java:使用创建的字符串作为循环参数?

Java Date() 给出了错误的日期