我正在用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

在这里,我以JSON格式的响应传递了电影的id和想要返回的字段。

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

编辑:是的AJ我最终找到了相同的示例,但我无法使其正常工作

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

  @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;
}

我不能注册该类,我真的必须扩展ResourceConfig吗? 似乎与javax.ws.rs.core.Application不兼容

===============>>#1 票数:1

如果您使用的是Jersey,则可以使用其过滤工具。 以下是docs中相关章节的链接: 实体过滤

19.5节似乎符合您的要求。

注意:我以前没有使用过(过滤功能,我确实使用过Jersey)。 我发现它使用谷歌。 因此,我无法提供有关如何使其工作的示例。

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

  ask by Miksel translate from so

未解决问题?本站智能推荐:

1回复

在REST / Java中,如果我的对象为null,我应该返回什么?

我有一个简单的POJO,我用REST注释注释如下: 请注意,包含d.getName()的日志语句实际上可以抛出一个NPE,然后捕获并记录该NPE。 这不是很漂亮,但这也不是重点。 最终d是否有价值,我将其归还。 在空值的情况下,我的客户端收到HTTP 204状态代码。 这
3回复

如何从Java Rest API返回json对象

我正在尝试从jax-rs返回JSON对象,但是每当尝试访问时都会收到内部服务器错误。 这是我的方法,我正在使用javax.ws.rs.GET 。 这是课程: 我的Pom.xml具有此依赖关系,我尝试了各种依赖关系,但没有任何效果。 球衣有各种Maven资源,其中有jers
1回复

JAX-RS-避免REST请求中的新字段生成400-错误的请求

我想避免我的REST POST服务(Spring中的JAX-RS)返回400-错误请求,如果我使用无法解组的新字段调用该服务。 让我们做一个例子: 我有此输入请求java类: 如果在输入的JSON请求中还有另一个字段(例如“ _newProperty”),我希望解析器不会出错
1回复

带有可选字段的ReST资源/模型

我正在尝试学习如何实现CRUD ReST API。 我使用JAX-RS创建了一个简单的应用程序,并使用Postman测试了我的HTTP方法。 我的问题是,如何为POST方法的模型定义可选字段? 恩。 “人”包含“姓氏”,“姓氏”作为必填字段,并且包含“年龄,性别”作为可选字段。
2回复

使用Java REST Client(Apache CXF或Jersey)读取字符串

我不明白为什么当我收到json编码的字符串时不会自动解码。 我使用Apache CFX 3.1.4或Jersey 2.22.1尝试了以下代码: 该请求已成功执行,但basePath包含"\\/opt\\/local\\/application\\/rest\\/" (包括反斜杠和双引号
1回复

REST调用返回空白XML

我对REST编程很陌生。 下面是我的旨在返回XML / JSON的类,但是我很难使它返回正确的值。 我尝试返回POJO类的Response, JsonArray和Object,但无法正常工作。 我查看了多个线程,但无法弄清楚到底是什么问题。 资源类: POJO类:
1回复

在REST服务中编码响应

我在服务方法中使用类javax.ws.rs.core.Response : 我的系统的Response内容层次结构实例包含在instance object 。 该对象及其所有子代及其属性。 而且我想编码object的属性值。 例如,我需要在响应中提供百分比编码符号,而不是名称中的空
4回复

从JAX-RS Rest Service作为JSON返回异常

从REST服务抛出的异常是否以某种方式作为JSON返回? 我有一个JAX-RS Rest Service,我想实现这一目标。 当我现在扔它时,它被映射到HTML响应,这不是我想要的。 据我了解,ExceptionMapper还将其映射到HTML吗? 是否有其他替代方法或库允许以JSON格
1回复

Java Rest Jersey:发布多种类型的数据(文件和JSON)

我有一个Jersey REST服务,将向其发布数据。 将有一个CSV文件,它是该CSV的实际数据和一些元数据(元可以是JSON或XML格式)。 如果需要发布这两个方法,那么方法签名和附加注释应该如何发布,如果它是...... 在这里,我设想第一个参数是元数据的JSON字符串,第二个参
1回复

在Java Rest API中使用json POST请求的问题

我知道这个问题已经被问过几次了,但是即使做了所有这些回答后,我仍然很困惑。 我是Java EE的新手,在使用Spring框架之前,我希望有一个坚实的基础。 所以我的问题是我无法接受/处理发送到简单Java Rest API的json请求。 我有一个调用Java rest API的前端网页。