HTTP PUT文件和数据

时间:2011-09-25 19:23:42

标签: php rest curl

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

让我们说这些图片中的每一个都有一个自定义名称,用户可以分配它们,以便他们轻松浏览它们。

我想做的是发送包含更新文件和图片新名称的放置请求,但我不确定如何让PHP从新名称中分离更新文件://输入

有谁知道怎么做?

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

查看AtomPub(http://tools.ietf.org/html/rfc5023),尤其是编辑媒体链接。它并没有给你你想要的东西,但也许你可以适应它。

将多部分文档输入到原子条目应该在语义上可行,其中multipart的第一部分是用于更新标题的原子条目XML。该条目的内容元素可以使用cid指向第二个多部分(图像数据):URI(http://tools.ietf.org/html/rfc2392

Slug标题(也在RFC 5023中)也可能是一个开始调查。

在Content-Disposition周围可能还有一些较旧的标题:和标题:您可以搜索。

另一种选择是提出一个具有适当语义的新资源,以及POST或PATCH多部分或结构化文档。

答案 2 :(得分:0)

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

PUT /images/new_image.jpg

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

使用SLUG标头执行此操作:

  

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

     

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

     

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

<强>参考