【发布时间】:2020-07-10 15:20:35
【问题描述】:
我们有一个使用 REST 和 JSON 与 ReactJS 前端交互的 C# WebAPI。我们偶然发现了需要从服务器向客户端发送大量数据的情况。
格式基本上是:
[
{
id: 1,
description: "description for Id 1",
parentId: 1
},
{
id: 2,
description: "description for Id 2",
parentId: 1
},
{
id: 3,
description: "description for Id 3",
parentId: 2
},
......
]
我们的前端开发人员正试图说服我改用这样的数组:
[
[1, 'description for Id 1', 1],
[2, 'description for Id 2', 1],
[3, 'description for Id 3', 2],
....
]
这当然会使 JSON 更轻量级,但我认为这是一种不必要的 hack,会破坏格式的逻辑和描述性。
我的问题是:
这是一种不好的做法吗?这会破坏服务器和客户端之间的“预期”合同吗?还是正常的优化做法?
P.S.:在写这个问题之前,我怀疑这是否会作为一个“基于主要意见的问题”来结束,但我不认为是这种情况。
【问题讨论】:
-
这个问题的一部分将根据意见得到答案,这在 Stack Overflow 上并不是那么有建设性。回答你的一个问题,它会破坏合同吗?好吧,这两种 json 格式定义了完全不同的结构,能够处理第一种格式的客户端将无法自动处理第二种格式,反之亦然。
-
我认为您在两个方面是对的 - 由于基于意见,问题将被关闭,并且展平的数组失去了数据含义的上下文。
-
至于“正常优化实践”,“正常优化实践”的第一步是先验证你需要优化什么,然后衡量你有什么找出您需要优化的什么。如果没有确凿的证据表明这改善了 something,我永远不会将结构从具有属性的对象更改为扁平的非结构化数组。如果您所拥有的只是前端开发人员的意见,那么对我来说,这不会削减它。
-
我们过去曾遇到过这类优化问题。我们处理它的最初方法是返回分页响应,并允许前端通过查询参数指定某些分页分页行为(即:每页的帖子数和页码)。我们提供的另一个选项是允许字段过滤以提供前端以仅指示该特定请求所需的必需字段。但我同意上述观点,您可能会对此有很多意见。
-
好的,谢谢您的见解。我会在几秒钟内删除这个问题,因为它是基于意见的。