混合资源(REST)和非资源
问题描述:
我们的服务器当前提供了一个REST-ful API,允许用户按照预期收集CRUD资源。混合资源(REST)和非资源
如果我们有一些不是资源的东西,比如辅助数据,会发生什么?我们必须坚持严格的REST-ful惯例吗?
举例来说,假设我们有狗在一个REST API FUL:
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 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
这是我的观点,我希望我帮助你。