我们的服务器目前提供一个REST-ful API,允许用户按预期CRUD资源。
如果我们有一些不是资源的东西,比如helper数据,会发生什么?我们必须坚持严格的rest约定吗?
例如,假设我们有一个REST-ful API中的dog:
GET: /dogs/
GET: /dogs/:id
POST: /dogs/
PUT: /dogs/:id
DELETE: /dogs/:id
是否可以添加如下内容:
GET: /util/randomNumber/
返回一个随机数?
它不是真正的资源,因为你永远不会更新它,或者删除它,也不能成为集合的一部分。它也不可靠,因为每次点击都会改变。
(注意,我实际上并没有试图生成随机数。
可以将随机数生成器方法装饰成
@GET
@Path("util/randomNumber")
public Response getRandom(...)
在RESTful环境中,并非每个资源都需要具有所有CRUD操作。使用只读非集合资源是完全合法的。
是的,你可以使用一些服务通过GET请求来完成。
Apigee团队讨论了许多有趣的方法和标准来处理RESTful服务中的url和资源。
我读过一本Apigee的电子书的第19页,一种关于转换的方法,我认为这对你很有用。
就你的情况而言,我认为处理产生一些随机值的服务的最好方法是:
GET: /util/generateRandomNumber/
在本例中,您标识您的操作,生成一个随机数。或者,让我们试着做得更好:
GET: /util/generate?type=number
在这种情况下,您可以更灵活地为generate添加其他类型。
你也可以输入一些查询参数,如:
GET: /util/generate?type=number&min=0&max=100
返回0到100之间的一个数字。
这是我的观点,我希望我对你有所帮助。