小编典典

如何使用 REST Web 服务上传包含元数据的文件?

all

我有一个 REST Web 服务,它当前公开了这个 URL:

http://服务器/数据/媒体

用户可以POST在其中使用以下 JSON:

{
    "Name": "Test",
    "Latitude": 12.59817,
    "Longitude": 52.12873
}

为了创建一个新的媒体元数据。

现在我需要能够在上传媒体元数据的同时上传文件。解决这个问题的最佳方法是什么?我可以引入一个名为filebase64 的新属性并对文件进行编码,但我想知道是否有更好的方法。

也有使用multipart/form-data类似于 HTML 表单发送的内容,但我使用的是 REST Web 服务,如果可能的话,我想坚持使用 JSON。


阅读 108

收藏
2022-03-01

共1个答案

小编典典

我同意 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 可以指向具有更多空间/容量的其他服务器。或者,如果带宽是一个问题,您可以实施某种循环方法。

2022-03-01