【发布时间】:2015-01-07 20:39:18
【问题描述】:
我有一个简单的 POJO,我用 REST 注释进行了如下注释:
@GET
@Path("/domains/{domainid}")
@Override
public Domain getDomain(@PathParam("domainid") UUID domainID) throws Exception {
logger.info("Retrieving domain "+ domainID);
Domain d = null;
try {
d = MyClient.getDomains().get(domainID.toString());
logger.debug("Returning "+d.getName());
} catch (Exception e) {
logger.error("Could not retrieve domain", e);
}
return d;
}
请注意,包含d.getName() 的日志语句实际上可以抛出一个 NPE,然后将其捕获并记录下来。这不漂亮,但这也不是重点。
最终不管d有没有值,我都返回。
对于 null 值,我的客户端会收到 HTTP 204 状态代码。这是wget 显示的内容:HTTP request sent, awaiting response... 204 No Content
奇怪的是,我的浏览器一动不动。他们仍然显示上一页(我认为当没有收到内容时保持原状是有意义的)。我本来希望是空白页。
三个问题:
- HTTP 204 是要返回的正确响应吗?
- 如何通过注释控制它?通过其他配置?
- 关于空对象的标准 REST 最佳实践是什么?
谢谢
编辑
这里有一个关于同一主题的好问题:Is it correct to return 404 when a REST resource is not found?
【问题讨论】:
-
我昨天问了同样的问题。见这里:stackoverflow.com/questions/26845631/…。
标签: java json rest jersey jax-rs