我有一个 REST Web 服务,它当前公开了这个 URL:
用户可以POST
以下JSON:
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873
}
为了创建一个新的媒体元数据。
现在我需要能够在上传媒体元数据的同时上传文件。解决这个问题的最佳方法是什么?我可以引入一个名为 file
的新属性并对文件进行 base64 编码,但我想知道是否有更好的方法。
还有使用 multipart/form-data
就像 HTML 表单发送的内容一样,但我使用的是 REST Web 服务,如果可能的话,我想坚持使用 JSON。
最佳答案
我同意 Greg 的观点,即两阶段方法是一种合理的解决方案,但我会反过来做。我会这样做:
POST http://server/data/media
body:
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873
}
创建元数据条目并返回如下响应:
201 Created
Location: http://server/data/media/21323
{
"Name": "Test",
"Latitude": 12.59817,
"Longitude": 52.12873,
"ContentUrl": "http://server/data/media/21323/content"
}
然后客户端可以使用这个 ContentUrl 并对文件数据执行 PUT。
这种方法的好处是,当您的服务器开始处理大量数据时,您返回的 url 可以指向具有更多空间/容量的其他服务器。或者,如果带宽是一个问题,您可以实现某种循环方法。
关于web-services - 如何使用 REST Web 服务上传包含元数据的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3938569/