rest - "RESTful"API 中的操作

标签 rest asp.net-web-api asp.net-web-api2 api-design

我有幻灯片。每个幻灯片都由幻灯片组成。

以下命令将返回幻灯片中有序幻灯片的列表:

获取 api/slideshows/123/slides:

{
    {
        slideId : "22",
        name : "My slide"
    },
    {
        slideId : "25",
        name : "My second slide"
    },
    {
        slideId : "26",
        name : "Another slide"
    }
}

我想执行以下操作,例如:

将幻灯片 26 移动到幻灯片 22 之后的位置

公开此类请求的好方法是什么?

我们可以以不同的顺序放置整个幻灯片集合,但是如果发生更多更改,这将替换所有幻灯片数据。另外,可能需要传输大量数据。

PUT api/slideshows/123/slides

另一个选项是提供一个moveAfter“操作”:

POST api/slideshows/123/slides/26?action=moveAfter
body: 
{
    referenceId : "22"
}

我知道这并不完全是 RESTful,但是还有其他实用的解决方案吗?

最佳答案

我会做这样的事情:PUT api/slideshows/123/slides/26/position 22

顺便说一句。挺有趣的。您可以通过两种方式做到这一点:

  • 每张幻灯片都有一个唯一的 ID,与顺序无关
  • id 与订单索引(或位置)相同 - 在这种情况下,您必须在每次移动后更新整个集合,因为服务器维护资源状态而不是客户端,因此速度会慢得多。

关于rest - "RESTful"API 中的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27065144/

相关文章:

java - 使用 spring-boot : Content Negotiation failed! 未找到类型返回值的转换器

java - 无法将 yaml 字符串转换为在 Java 中使用键 "NO"进行映射

mongodb - MongoDB 的 Varnish ,有必要吗?

c# - 如果我们只有一系列没有独立工作的调用,MVC4 async await 有什么好处?

c# - 如何在asp.net mvc中从同一个api Controller 调用多个GET方法?

当站点具有全局 AuthorizeAttribute 时,ASP.NET 允许匿名访问 OData $metadata

c# - 移植到 web api 2 后 NinjectHttpApplication 不起作用

javascript - REST - 如何限制未授权客户端软件的访问

asp.net-mvc-4 - 为什么我们需要在 MVC 中使用 Web API? mvc中restful api的缺点是什么?

angularjs - Web Api 2子域 token 认证