【发布时间】:2011-09-25 19:23:41
【问题描述】:
在我的 RESTful API 中说我有一张用户可以通过 PUT 请求更新的图片。
假设这些图片中的每一个都有一个用户可以为其指定的自定义名称,以便他们可以轻松浏览它们。
我想做的是发送一个包含更新的文件和图片的新名称的放置请求,但我不确定如何让 PHP 在从 php 读取时将更新的文件与新名称分开//输入
有人知道怎么做吗?
【问题讨论】:
在我的 RESTful API 中说我有一张用户可以通过 PUT 请求更新的图片。
假设这些图片中的每一个都有一个用户可以为其指定的自定义名称,以便他们可以轻松浏览它们。
我想做的是发送一个包含更新的文件和图片的新名称的放置请求,但我不确定如何让 PHP 在从 php 读取时将更新的文件与新名称分开//输入
有人知道怎么做吗?
【问题讨论】:
将标量参数(即旧名称、新名称)放入查询字符串中。
【讨论】:
X- 前缀的自定义标头,但这会扩展协议。
看看 AtomPub (https://www.rfc-editor.org/rfc/rfc5023),尤其是编辑媒体链接。它并不能完全满足您的需求,但也许您可以调整它。
将多部分文档放入原子条目在语义上应该没问题,其中多部分的第一部分是原子条目 XML 以更新标题。该条目的内容元素可以使用 cid: URI (https://www.rfc-editor.org/rfc/rfc2392) 指向第二个多部分(图像数据)
Slug 标头(也在 RFC 5023 中)也可能是调查的开始。
您可能会搜索 Content-Disposition: 和 Title: 周围的一些较旧的标题。
另一种选择是提出一个具有适当语义的新资源,然后 POST 或 PATCH 一个多部分或结构化文档。
一月
【讨论】:
为什么不使用 url 作为文件名?
PUT /images/new_image.jpg
【讨论】:
如果您想在同一个请求正文中包含多种内容类型,正确的格式是使用 multipart mime 将它们全部包装到同一个请求正文中。不过,在这种情况下,支持像 multipart mime 这样复杂的东西可能有点难以证明。
【讨论】:
经过考虑,我认为您需要的是带有multipart/form-data 的 POST 请求。这允许文件和一些标量数据项,而不会对文件数据产生 Base64 或 URLEncode 的开销。
【讨论】:
使用 SLUG 标头来执行此操作:
换句话说,Slug 标头为客户端提供了一种为新创建的资源建议 URI 的方法。
URI 只能使用有限的字符集,如果 Slug 使用合法 URI 字符集之外的字符,则服务器必须转义这些字符。
两个或多个客户端可能同时尝试使用相同的 Slug 创建资源,服务器必须给每个资源一个唯一的 URI,因此服务器可能会选择用额外的字符装饰 slug 以确保每个资源都是唯一的命名。
参考文献
【讨论】: