【问题标题】:REST service and big filesREST 服务和大文件
【发布时间】:2012-01-26 13:46:27
【问题描述】:

REST 网络服务(通常产生例如简单的JSONs)能否处理和返回大的二进制输入/输出数据?

我的意思是,通过提供大文件的 HTTP POST 调用 REST 服务,然后再读取大结果? REST 可以吗? (“大”= 几兆字节)

【问题讨论】:

  • REST 架构不限于任何媒体类型。

标签: c# .net web-services rest soap


【解决方案1】:

使用诸如 JSON 和 XML 之类的文本序列化程序,由于二进制数据需要进行 Base64 编码,因此通过网络传输的文件大小将增加约 33%。有更优化的协议,例如MTOM 来处理这种情况。 WCF supports MTOM 开箱即用。

【讨论】:

  • 谢谢。一个问题,JSON到底有没有二进制数据支持?
  • @James,JSON 是文本,因此您需要将二进制数据编码为一些文本表示形式,通常是 Base64 导致消息大小显着增加。
  • 如果没有 JSON,REST 是否可以使用 HTTP GET “直接”返回二进制数据?
  • @James,当然。当您单击指向要下载的二进制文件的网站上的某个链接时,您认为会发生什么?您正在向服务器发送一个 GET 请求,该服务器通过直接在响应中写入文件的二进制内容来响应此 GET 请求。您的浏览器使用 Content-Disposition 响应标头来内联显示文件或提示您将其保存在某处。
  • MTOM/XOP 是 SOAP 而不是 REST 的领域,不是吗?
【解决方案2】:

REST 架构非常有能力使用 HTTP 来提供 application/octet-stream,这只是一个字节流。 HTTP 可以非常可靠地处理非常大的文件。

【讨论】:

    【解决方案3】:

    由于 REST 主要是基于 HTTP 的服务,因此 HTTP 的标准优势和限制也适用于 REST 服务。您可以将几 MB 的大文件作为 POST 发送到 REST API,其方式类似于将大文件上传到 Web 应用程序。

    【讨论】:

      猜你喜欢
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 2012-09-15
      • 1970-01-01
      • 2016-07-03
      相关资源
      最近更新 更多