Java - 指定要在 REST 中返回的字段

标签 java json rest field jax-rs

我正在用 Java 实现基于 REST 的服务,但我不想为每个 GET 调用返回 JSON 中的完整实体。

我现在有的是这个

@GET
@Path("movie/{id}")
@Produces({"application/json"})
public Movie find(@PathParam("id") Integer id) {
    return getEntityManager().find(Movie.class, id);
}

通过上面的代码,我可以获得由 id 指定的电影的完整 JSON 表示,但是我想做这样的事情:

GET>http://mydomain.com/movie/id=1?fields=title,year

在这里,我传递了电影的 id 以及我希望在 JSON 格式的响应中返回的字段。

有没有一种简单的方法可以做到这一点,或者现有的图书馆已经做到了这一点?

编辑: 是的,A.J 我最终找到了相同的例子,但我无法让它工作

在那个例子中,他们有一个包含所有必要配置的文件

  @ApplicationPath("/")
  public class SelectableEntityFilteringApplication extends ResourceConfig {

  public SelectableEntityFilteringApplication() {
      // Register all resources present under the package.
      packages("org.glassfish.jersey.examples.entityfiltering.selectable");

      // Register entity-filtering selectable feature.
      register(SelectableEntityFilteringFeature.class);

      // Configure MOXy Json provider.
      register(new MoxyJsonConfig().setFormattedOutput(true).resolver());

      property(SelectableEntityFilteringFeature.QUERY_PARAM_NAME, "select");

  }

但是因为我使用的是 J2EE,所以我的 IDE 生成的文件是这样的

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {

@Override
public Set<Class<?>> getClasses() {
    //register(SelectableEntityFilteringFeature.class);
    Set<Class<?>> resources = new java.util.HashSet<>();
    addRestResourceClasses(resources);
    return resources;
}

而且我无法注册类(class),我真的必须扩展 ResourceConfig 吗?似乎与 javax.ws.rs.core.Application 不兼容

最佳答案

如果您使用的是 Jersey,您可能可以使用它的过滤功能。 以下是文档中相关章节的链接:Entity Filtering

部分19.5看起来符合您的要求。

注意:我之前没有用过这个(过滤功能,我用过Jersey)。 我用谷歌找到了它。所以我无法提供有关如何使其工作的示例。

编辑:一个例子:https://github.com/jersey/jersey/tree/master/examples/entity-filtering-selectable

关于Java - 指定要在 REST 中返回的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23177078/

相关文章:

iOS编程,获取JSON数据

javascript - 没有响应正文的 OPTIONS 请求上的 Chrome 长 "Content Download"时间

rest - 更改 Genexus 过程 Rest 中的 HTTP 状态代码

java - 在 SPOJ 中针对此代码收到 NZEC 错误

java - 如何从 Java 中的 ®、©、™ 等字符串中删除高位 ASCII 字符

javascript - 包含自定义键作为对象的 JSON 对象是否有效?

spring - 使用 RESTful 登录 API 验证我的 Spring Boot 应用程序

java - 文件处理异常

java - 如何将变量传递给按钮 clickListener 事件中的方法?

php - 如何使用 AJAX/JSON 提交表单?