混合资源(REST)和非资源

时间:2013-03-04 18:35:49

标签: java rest

我们的服务器目前提供REST-ful API,允许用户按预期使用CRUD资源。

如果我们有一些不是资源的东西会发生什么,例如帮助数据?我们是否必须坚持严格的REST-ful惯例?

例如,假设我们在REST-ful API中有狗:

GET:  /dogs/
GET:  /dogs/:id
POST: /dogs/
PUT:  /dogs/:id
DELETE: /dogs/:id

是否可以添加以下内容:

GET: /util/randomNumber/

返回一个随机数?

它不是真正的资源,因为你不会更新或删除它,也不能成为集合的一部分。它不可靠,因为它会在每次击中时发生变化。

(注意,我实际上并没有尝试生成随机数。只是一个例子)。

3 个答案:

答案 0 :(得分:1)

是的,可以将随机数生成器方法设置为

@GET
@Path("util/randomNumber")
public Response getRandom(...)

答案 1 :(得分:1)

在RESTful环境中,并非每个资源都需要具有所有CRUD操作。拥有只读非收集资源是完全合法的。

答案 2 :(得分:1)

是的,您可以使用某些服务通过GET请求来执行此操作。

Apigee team讨论显示了许多有趣的方法和标准,可用于RESTful服务中的URL和资源。

我在Apigee的e-book的第19页读过,这是一种关于转换的方法,我认为这对你有用。

在您的情况下,我认为处理生成一些随机值的服务的最佳方法是:

GET: /util/generateRandomNumber/

在这种情况下,您可以识别您的操作,生成随机数。或者,让我们尝试做得更好:

GET: /util/generate?type=number

在这种情况下,您可以更灵活地为生成添加其他类型。

您还可以添加一些查询参数,例如:

GET: /util/generate?type=number&min=0&max=100

将返回0到100之间的一个数字。

这是我的观点,我希望我帮助过你。