混合二进制和非二进制HTTP资源

时间:2017-11-12 00:22:27

标签: rest http asp.net-core data-representation

我正在开发基于ASP.NET Core 2的RESTful HTTP API,该服务将由Web前端使用。

在API中有一个表示文件的资源。它附带了一些元数据(id,name,folder),并且可以选择包含表示文件内容的原始二进制数据。 API的其余部分使用JSON。

在请求和响应中表示此资源的现代方法是什么?我到目前为止找到的选项是:

带有base64编码数据的JSON

优点:易于实施和使用

缺点:二进制数据的大小可达多GB,而Base64会大量增加流量以及上传和下载时间,此外,数据必须进行编码和解码,这将使这个过程相当慢

将资源拆分为JSON和二进制子资源

优点:易于实施和使用

缺点:必须提出两个请求才能访问所有信息

BSON

优点:没有Base64

缺点:在服务器和客户端都不像JSON那样容易处理,数据是二进制的,即使只发送非二进制数据,也必须进行编码和解码,需要额外的依赖性,格式与API的其他部分不同

带有JSON和二进制数据的multipart / form-data

优点:二进制和非二进制数据可以拆分为JSON和二进制数据

缺点:难以处理,格式与API的其他部分不同

0 个答案:

没有答案
相关问题