我正在开发一个API,给定一个包含特定内容的请求体,它会生成一个可以是不同格式的文档(例如PDF,png等)。考虑到文档可以是二进制文件,该文件是base64编码的,并放置在一个JSON响应中,如下所示:
{
"document": "document base64-encoded"
}
字符串
回答可能包含其他字段,但它们与问题无关。
问题是:
指定document
字段的内容类型(例如PDF)和内容编码(例如base64)的最佳方法是什么?
我想到了一些选择,但我想听听你的建议。
我的选择
- 使用头参数
Content-Type
和Content-Transfer-Encoding
:我假设这个选项是错误的,因为这些参数应用于消息本身,在本例中是没有任何编码的application/json
。 - 指定自定义参数(例如
x-document-content-type
和x-document-content-tranfer-encoding
。 - 在响应体中包含这样的元数据,如下所示:
{
"document": {
"content": "document base64-encoded",
"type": "pdf",
"encoding": "base64"
}
}
型
1条答案
按热度按时间f45qwnt81#
这里有两层通信,每层都有自己的合约/协议。您自己的JSON API协议,通过HTTP协议发送。您应该坚持HTTP标准以遵守该层的合约,并且由您定义JSON数据的合约。
上面提到的HTTP头是用来告诉用户代理/客户端HTTP主体的MIME类型是什么。这必须是application/JSON才能符合HTTP标准。如果你偏离了这个,它将不再是有效的HTTP流量,一个常规的、配置良好的HTTP客户端将无法使用你的API。
HTTP消息中的JSON主体可以填充任何API的消费者使用编码内容所需的内容。您在这里定义了自己的合约,因此它实际上取决于您和API消费者的需求。
是否使用其他内容编码作为base64?如果是,则可以指定数据的编码。
您是否提供了多种不同的文件类型?然后添加编码数据的内容类型是很有用的。请注意,编码内容的头可能已经包含有关文件内容类型的信息。
附言:最好提供你命名的“类型”,作为mime类型。这是一个更常见的定义内容类型的标准。