gpt4 book ai didi

file - 如何使用 REST 对文件系统操作进行建模?

转载 作者:行者123 更新时间:2023-12-04 17:41:29 28 4
gpt4 key购买 nike

一些文件系统的基本操作有明显的对应物(例如 lsrm ),但是您将如何实现不直接的 RESTful 操作,例如 cpmv ?

作为问题的答案How to implement copy paste of a resource in REST?建议,实现cp 的首选方式将包括获取资源,删除它并用新名称再次放回它。

但是,如果我需要有效地做到这一点呢?例如,如果资源的大小会很大?我将如何消除将资源的有效负载多余地传输到客户端并返回到原始服务器?

这是一个插图。我有一个资源:

/videos/my_videos/2-gigabyte-video.avi

我想将它复制到一个新资源中:

/videos/johns_videos/copied-2-gigabyte-video.avi

我将如何以 RESTful 方式实现复制、移动或其他文件系统操作?或者有没有合适的方法?我做错了吗?

最佳答案

我不相信任何给定的答案都是 RESTful 的。这就是我要做的。

对于副本:

PUT /videos/johns_videos/copied-2-gigabyte-video.avi
HOST: www.server.com
Content-Location: /videos/johns_videos/2-gigabyte-video.avi
[empty-body]

将内容放在 (/videos/johns_videos/copied-2-gigabyte-video.avi) 的位置 (/videos/johns_videos/2-gigabyte-video.avi)。

移动将是带有删除的副本,要检查副本和删除之间的一致性,您需要使用在 PUT 的响应中提供给您的修订号。
PUT /videos/johns_videos/copied-2-gigabyte-video.avi
HOST: www.server.com
Content-Location: /videos/johns_videos/2-gigabyte-video.avi
[empty-body]

201 Created
ETag: "3e32f5a1123afb12" (an md5 of the file)
Location: /videos/johns_videos/copied-2-gigabyte-video.avi
[empty-body]

DELETE /videos/johns_videos/2-gigabyte-video.avi
HOST: www.server.com
If-Match: "3e32f5a1123afb12"
[empty-body]

204 No Content
[empty-body]

为什么这是 RESTful?
  • 不将“移动”或“复制”附加到 URI(即 RPC)
  • 它使用 PUT(POST 是附加到集合,目标 URI 不完全已知)
  • 它不使用 RPC 而非 REST 发送的“命令”(例如 XML 指令)。
  • 不了解下划线存储 - 客户不关心硬/软链接(soft link)或复制优化,也不应该知道它们。

  • 迈克·布朗

    关于file - 如何使用 REST 对文件系统操作进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2860467/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com