当前位置: 首页 > 面试题库 >

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

樊奇思
2023-03-14
问题内容

我有一个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。


问题答案:

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



 类似资料:
  • 我有一个现有的Spring应用程序,它有自己的上下文,从Spring xml文件的douzens中引导。Grizzly web服务器开始发布Soap服务。 现在我也想满足同一只灰熊的Rest请求。我使用的是jersey-spring3,但它从所需的applicationContext.xml中启动自己的、独立的应用程序上下文。 这是创建注册Rest和Soap Web服务的Grizzly HttpS

  • 我花了几个小时试图将文件上载到本地服务器文件夹,但比预期的困难,请帮助。 在我的前端下面插入文件 下面是我的控制器

  • 问题内容: 我有3台机器: 文件所在的服务器 运行REST服务的服务器(泽西岛) 可以访问第二台服务器但不能访问第一台服务器的客户端(浏览器) 我如何直接(不将文件保存在第二台服务器上)将文件从第一台服务器下载到客户端计算机? 从第二台服务器可以获取 ByteArrayOutputStream 来从第一台服务器获取文件,我可以使用REST服务将此流进一步传递给客户端吗? 这样行吗? 因此,基本上我

  • 我想上传文件到我的谷歌驱动器使用谷歌服务号凭据。 我从谷歌开发者控制台下载了一个JSON文件作为凭证,并从中获得了凭证。 这是我的代码片段。 代码运行,没有错误,但是我找不到上传到我的Google Drive帐户的文件。我不知道为什么文件没有上传。你愿意帮我解决这个问题吗?

  • 我想使用cURL不仅以HTTP POST发送数据参数,而且还上传具有特定表单名称的文件。我该怎么做呢?

  • 我正在尝试使用Google Drive Java API v3为我们的应用程序实现一项新服务,该服务负责将文件上传到Google Team Drive中的特定文件夹。我使用我的公司专门为这个项目创建的服务帐户,还从谷歌开发者控制台生成了一个包含私钥的JSON文件。我还使用该服务帐户的电子邮件将该文件夹共享给该服务帐户xxxxx@xxxx.iam.gserviceaccount.com并授予Cont