【发布时间】:2016-12-02 08:06:40
【问题描述】:
我有这个问题:
我们有一个这样的 JAX.RS api:
@GET
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Path("get")
public User get(@QueryParam(value = "id") String identifier) {
return toUser(getUserEntry(identifier));
}
toUser() 方法可以返回 null,这实际上意味着客户端将看到 204 - No Content 响应。
现在,在客户端,我的代码如下所示:
getWebTarget("user")
.path("get")
.queryParam("id", identifier)
.request(getMediaType())
.get()
.readEntity(SsoUser.class);
我期待 readEntity() 抛出某种异常,但它实际上返回 null 并且没有抱怨。
看着documentation,我看到了这个:
对于零长度响应实体返回一个对应的 Java 对象,该对象代表零长度数据。 如果没有为 Java 类型定义零长度表示,则抛出包装底层 NoContentException 的 ProcessingException。
看来我的User 类确实定义了一个“零长度表示”。但我在文档中的任何地方都找不到这种表示的含义。
我可以理解 Java 可能如何推断出零长度表示为 null,但我不知道在哪里定义它。
对此有何见解?
【问题讨论】:
标签: java web-services jax-rs