Rest 执行操作的API路由

Rest 执行操作的API路由,rest,restful-architecture,api-design,Rest,Restful Architecture,Api Design,因此,传统的API资源允许您获取,放置,补丁,删除等资源 /api/v1/user/$id 但是,对于执行操作并返回有关该操作结果的响应的路由,技术术语是什么 /api/v1/flushcache 一种方法是只使用缓存资源: /api/v1/cache 它将返回一些缓存状态,例如application/vnd.company.cachestate+json: { "state": "active", "objectCount": 123 } 然后,您可以将放入相同的表示:

因此,传统的API资源允许您
获取
放置
补丁
删除
等资源

/api/v1/user/$id
但是,对于执行操作并返回有关该操作结果的响应的路由,技术术语是什么

/api/v1/flushcache

一种方法是只使用
缓存
资源:

/api/v1/cache
它将返回一些缓存状态,例如
application/vnd.company.cachestate+json

{
    "state": "active",
    "objectCount": 123
}
然后,您可以将放入相同的表示:

{
    "state": "flushed"
}
这可能会返回:

{
    "state": "active",
    "objectCount": 0
}
关键是,你必须首先用现有的术语来描述这个问题。使用的术语始终是:

  • 资源(您称之为“路由”):具有某种业务语义的实体
  • 表示:资源使用的实际消息格式。一个资源可能支持多个表示
  • Mime类型:一个表示(或多个表示)的形式化描述

因此,同样,通常没有“做”事情的资源,更像是,资源代表一些业务实体和标准操作(GET、PUT、POST、DELETE等)映射到该实体上的某些操作。

刷新缓存并不等同于
DELETE/api/v1/cache
?@CássioMazzochiMolin我假设您需要能够使用其他http方法才能将其作为资源。根据你的评论,我假设你不需要做所有的方法来成为一个合适的资源,那么@myol资源就是生活在端点上的东西。所有(实现的)方法都作用于资源,但并非所有方法都将返回资源的表示形式。如果端点存在,在REST中,这意味着那里有一个资源。不需要支持该资源的所有方法。但是,对于执行操作并返回有关该操作结果的响应的路由,技术术语是什么?我想说的技术术语是RPC:远程过程调用您可以将资源理解为任何可以命名的信息,例如文档或图像、临时服务(例如“今天的洛杉矶天气”)、其他资源的集合、非虚拟对象(例如人)等等。关于更多的细节,请参考菲尔丁博士论文的定义。这并没有回答问题。他不想知道休息方式,他想知道非休息方式的名称。