小编典典

如何使用REST Web服务上载带有元数据的文件?

json

我有一个REST Web服务,当前公开此URL:

http:// server / data / media

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

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

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

现在,我需要能够与媒体元数据同时上传文件。最好的方法是什么?我可以引入一个新属性file,对文件进行base64编码,但是我想知道是否有更好的方法。

还有使用multipart/form-dataHTML表单发送的内容,但是我正在使用REST Web服务,并且我想尽可能地坚持使用JSON。


阅读 232

收藏
2020-07-27

共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可以指向具有更多空间/容量的其他服务器。或者,如果带宽存在问题,则可以实施某种轮询方法。

2020-07-27