这并不是严格意义上的名词与动词。 关于您是否:
什么是资源? 因此,Fielding对其进行了定义:
REST中信息的关键抽象是一种资源。 可以命名的任何信息都可以是资源:文档或图像,临时服务(例如“洛杉矶今天的天气”),其他资源的集合,非虚拟对象(例如人)等 。 换句话说,任何可能成为作者超文本引用目标的概念都必须符合资源的定义。 资源是到一组实体的概念性映射,而不是在任何特定时间点对应于该映射的实体。”
现在,您的问题。 您不能只看URL并说:“某某URL是否与REST根本不兼容?” 因为REST系统中的URL并不是很重要。 更为重要的是,URL paused-processes
和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
}