最佳实践确定Restful API中传递的参数类型?

时间:2015-03-11 19:57:11

标签: java json web-services rest

我正在用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找出调用的方式非常酷。我觉得里面可能有一些同样很酷的事情可以解决这个问题......

提前致谢 彼得

1 个答案:

答案 0 :(得分:0)

我认为他们正在对ID本身进行编码。

从纯粹的REST视点来看,/{user-id}/albums{page-id}/albums是相同的端点。