3

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

如果我们有一些不是资源的东西,比如辅助数据,会发生什么?我们是否必须遵守严格的 REST-ful 约定?

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

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

是否可以添加类似的内容:

GET: /util/randomNumber/

返回一个随机数?

它不是真正的资源,因为您永远不会更新或删除它,也不能成为集合的一部分。它也不可靠,因为每次点击都会改变。

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

4

3 回答 3

1

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

于 2013-03-04T18:54:19.320 回答
1

是的,可以将您的随机数生成器方法装饰为

@GET
@Path("util/randomNumber")
public Response getRandom(...)
于 2013-03-04T18:46:36.230 回答
1

是的,您可以通过 GET 请求使用某些服务来做到这一点。

Apigee 团队讨论展示了在 RESTful 服务中使用 URL 和资源的许多有趣的方式和标准。

我已经阅读了 Apigee电子书的第 19 页,这是一种关于转换的方法,我认为这对您很有用。

就您而言,我认为处理生成一些随机值的服务的最佳方法是:

GET: /util/generateRandomNumber/

在这种情况下,您确定您的操作,生成一个随机数。或者,让我们尝试做得更好:

GET: /util/generate?type=number

在这种情况下,您可以更灵活地将其他类型用于生成。

您还可以放置一些查询参数,例如:

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

这将返回一个介于 0 和 100 之间的数字。

这是我的观点,希望对你有所帮助。

于 2013-03-04T19:06:38.157 回答