Jesrsey @Path工作机制

时间:2018-07-16 10:39:55

标签: java rest jersey jax-rs jersey-2.0

我注意到某些示例中的类实现了以下方法

@Path("{id}")
  @GET
  @Produces(MediaType.APPLICATION_JSON)
  public void retrieve(@Suspended final AsyncResponse asyncResponse,
                                 @PathParam("id") final String id) {....}

  @Path("/{id}")
  @GET
  @Produces(SseFeature.SERVER_SENT_EVENTS)
  public EventOutput retrieveSSE(@PathParam("id") final String id,@Context final HttpHeaders headers) {...}

似乎两者的路径都相同。 在这种情况下会发生什么?如果我根据客户端的“ Accept”标头正确理解,将调用相关方法。

如果未提及Accept标头,那么这里会发生什么? 两种方法都可以调用吗?还是仅仅是开始时的第一种方法?

如果未添加接受标头,球衣如何决定要调用哪种方法?

即使指定了标头,两个函数都被调用?响应给定头是否可用是功能的职责。

IE,如果API调用是使用Accept标头作为application / json进行的

但这两个方法都被调用了吗,因为第一个方法具有处理JSON的机制?

如果我问错了问题,请纠正我。

1 个答案:

答案 0 :(得分:0)

如果使用接受标头作为application / json进行api调用,则第一个方法将响应,因为它打算处理JSON请求。 关于您的问题(如果没有提到accept标头,并且资源具有相同的路径),那么,如果您的请求是多个资源可能响应的请求,那么Jersey可能会给出错误消息。