混合资源(REST)和非资源

混合资源(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

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