我正在用Java编写我的第一个JSON RESTful API。
前端将是AngularJS。对于Web服务,我使用Tomcat 7,JAX-RS,Jackson,Jersey等...
我想让API尽可能简单。
e.g。我会按ID和UUID查询用户。所以我想用例如/rest/users/{id}
和/rest/users/{uuid}
。理想情况下,我希望后端能够确定哪个是哪个而不是创建单独的API分支。
由于它全部来自JSON,我认为我不能让Java根据类型弄清楚它。所以我想出了:
@GET
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public User getJSONUser(@PathParam("id") String id) {
User user;
if(id.contains("-")){
user = userDao.getUserByHandle(id);
}else{
user = userDao.getUserById(Long.parseLong(id));
}
return user;
}
我注意到,作为一个例子,Facebook API在这个地方做到了这一点。例如/{user-id}/albums
和/{page-id}/albums
。
我应该注意一些技巧,这使得检测这些参数更容易吗?或者FB编码ID本身的东西?我已经走上正轨了。泽西能够根据MediaType找出调用的方式非常酷。我觉得里面可能有一些同样很酷的事情可以解决这个问题......
提前致谢 彼得
答案 0 :(得分:0)
我认为他们正在对ID本身进行编码。
从纯粹的REST视点来看,/{user-id}/albums
和{page-id}/albums
是相同的端点。