在我的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