使用Integer或String的REST API getById?

时间:2013-08-23 17:26:25

标签: rest jax-rs

我正在使用Jersey设计REST JAX-RS API。

我想知道通过ID获取对象的最佳做法是什么。 我是否需要在IntegerString

上映射ID

解决方案1:

/books/{id}
getById(@PathParam("id") Long id)

解决方案2:

/books/{id}
getById(@PathParam("id") String id)

我的意图是使用Long,因为它使用Long直接映射到我的数据库模型...

1 个答案:

答案 0 :(得分:1)

如果您需要long,请将参数设为long

如果JAX-RS无法将客户端请求的路径参数映射到long,它将返回404 Not Found HTTP状态代码,这是一件好事。如果您允许String,则您的代码必须执行此检查。让JAX-RS进行检查。

@GET
@Path("/books/{id}")
public Response getBook(@PathParam("id") long id) {
    return Response.ok("book " + id).build();
}

/books/123的请求将返回book 123/books/foo的请求将因404 Not Found而失败。