这不是严格意义上的名词与动词。这是关于你是否:
什么是资源?菲尔丁是这样定义的:
REST 中信息的关键抽象是资源。任何可以命名的信息都可以是资源:文档或图像、时间服务(例如“洛杉矶今天的天气”)、其他资源的集合、非虚拟对象(例如人)等等. 换句话说,任何可能成为作者超文本参考目标的概念都必须符合资源的定义。资源是对一组实体的概念映射,而不是在任何特定时间点对应于映射的实体。”
现在,回答你的问题。你不能只看一个 URL 就说,“这样那样的 URL 从根本上与 REST 不兼容吗?” 因为 REST 系统中的 URL 并不是真正重要的部分。更重要的是通过上述定义的 URLprocess/123/pause
和标识资源。calculations/fibonacci
如果他们这样做,则不存在违反 REST 约束的情况。如果他们不这样做,那么您就违反了 REST 的统一接口约束。您的示例使我相信它不符合资源定义,因此会违反此约束。
为了说明该系统中的资源可能是什么,您可以通过将进程发布到paused-processes
资源集合来更改进程的状态。尽管这可能是处理流程的一种不同寻常的方式,但它与 REST 架构风格并不完全不兼容。
在计算的情况下,计算本身可能是资源,而该资源可能如下所示:
Request:
GET /calculations/5
Response:
{
fibonacci: 5,
prime-number: true,
square-root: 2.23607
}
不过,这又是一个有点不寻常的资源概念。我想稍微更典型的用法可能如下所示:
Request:
GET /stored-calculations/12381728 (note that URL is a random identifier)
Response:
{
number: 5,
fibonacci: 5,
prime-number: true,
square-root: 2.23607
}
尽管您可能想要存储有关该资源的其他信息,而不是任何人都可以使用计算器进行的纯粹计算......
Response:
{
number: 5,
fibonacci: 5,
prime-number: true,
square-root: 2.23607,
last-accessed-date: 2013-10-28T00:00:00Z,
number-of-retrievals-of-this-resource: 183
}