HTTP PUT文件和数据


HTTP PUT file and data

在我的RESTful API中,假设我有一张图片,用户可以通过PUT请求更新。

假设这些图片都有一个用户可以分配的自定义名称,这样他们就可以很容易地浏览它们。

我想做的是发送一个包含更新的文件和图片的新名称的放请求,但我不确定如何让PHP在从PHP读取时将更新的文件与新名称分开://输入

有人知道怎么做吗?

将标量参数(即旧名称、新名称)放入查询字符串

看看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到该资源。

1月

为什么不用url作为文件名呢?

PUT /images/new_image.jpg

如果你想在同一个请求体中有多个内容类型,正确的格式是使用multipart mime将它们全部包装到同一个请求体中。在这种情况下,支持像多部分mime这样复杂的东西可能有点难以证明。

经过考虑,我认为您需要的是与multipart/form-data的POST请求。这允许文件和一些标量数据项,而无需在文件数据上使用Base64或URLEncode的开销。

使用SLUG header:

换句话说,Slug头为客户端提供了一种为新创建的资源建议URI的方法。

URI只能使用有限的字符集,如果Slug使用合法URI字符集之外的字符,那么服务器必须转义这些字符。

两个或更多的客户端可能会尝试同时使用相同的Slug创建资源,服务器必须为每个资源提供唯一的URI,因此服务器可以选择使用额外的字符来修饰Slug,以确保每个资源都是唯一命名的。

引用

  • HTTP报文头
  • Text.Atom.Pub.Export