API设计 - 对数组中的返回数据进行排序

时间:2013-02-04 20:27:22

标签: api api-design

我目前有一个API端点,它返回一个对象数组,每个对象包含4个JSON格式的变量。

数据的大小范围从500kb到5mb - 取决于记录的数量。为了减小返回的大小,我们正在考虑从对象中删除标签,并返回一个数组数组。

E.g。

[{propertyone:123,propertytwo:456,propertythree:789,propertyfour:012}等,等,等]

会变成

[[123456789012],等等,等等,等等]

然后我们会记录数组位置0是否考虑了propertyone等。将来这个API公开时可能会有一点。是否更好的做法是将名称保留在其中,或者以强制订单的形式提供文件化的API。

1 个答案:

答案 0 :(得分:1)

记录良好的API通常是最好的API。拥有API的外部文档非常重要,但您返回的数据也需要记录在案,并且没有任何内容可以自我记录数据。

我认为通过删除属性名称,您将完全失去这种自我记录,并且您最终也可能限制自己。例如,考虑只想要返回部分数据,如果没有这些属性名称,您将如何表示它?

除了文档之外,如果您要返回JSON,那么根据消费者的环境,提供这些属性可以为他们提供一个自然的模型。以JavaScript为例,如果他们只是将您的响应解析为JavaScript对象,那么他们实际上是免费实现客户端模型,这将使​​您能够使用API​​。

尽管如此,速度很重要,我建议考虑采用不同的措施来减少回报的大小。通常,解决此问题的方法是提供分页结果,如果客户需要更多数据,则需要客户端执行其他请求。此外,根据数据的形状,您可以通过在回复中使用GZIP compression这样简单的内容来获益。

在设计API时,只要你记录它并且它按照描述工作,通常任何东西就足够了。但是,赋予消费者权力的API就是成功的。