C# 我应该返回数组而不是单个值吗?
我们有一个使用REST和JSON与ReactJS前端交互的C#WebAPI。我们偶然发现了这样一种情况:我们需要从服务器向客户端发送大量数据 格式基本上是:C# 我应该返回数组而不是单个值吗?,c#,json,rest,C#,Json,Rest,我们有一个使用REST和JSON与ReactJS前端交互的C#WebAPI。我们偶然发现了这样一种情况:我们需要从服务器向客户端发送大量数据 格式基本上是: [ { id: 1, description: "description for Id 1", parentId: 1 }, { id: 2, description: "description for Id
[
{
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更加轻量级,但我认为这是一种不必要的攻击,破坏了格式的逻辑性和描述性
我的问题是:
这是个坏习惯吗?这是否破坏了服务器和客户端之间的“预期”契约?或者这是一种正常的优化实践
注:在写这个问题之前,我怀疑这是否会被作为“主要的基于意见的问题”来解决,但我不相信会是这样。请记住,除非你真的弄乱了服务器设置,否则数据是通过Gzip发送的。比较这两个(小)样本的gzip格式,差异约为20字节(101字节vs 77字节)
相对而言,它只会变得更小,你拥有的条目越多,因为公共部分保持不变,它们只需要编码一次。这个问题的一部分会有基于观点的答案,这在堆栈溢出问题上不是很有建设性。回答你的一个问题,它会违反合同吗?好的,这两种json格式定义了完全不同的结构,能够处理第一种格式的客户端不会自动处理第二种格式,反之亦然。我认为您在两个方面是对的-问题将因基于观点而结束,而扁平数组将失去数据含义的上下文。至于“正常优化实践”,是“正常优化实践”的第一步“首先要验证您是否需要优化某些内容,然后衡量您需要优化哪些内容。如果没有确凿的证据表明这可以改善某些东西,我永远不会将结构从具有属性的对象更改为扁平的非结构化数组。如果你所拥有的只是前端开发人员的意见,那么对我来说,这不会减少它。我们在过去遇到过此类优化问题。我们处理它的最初方法是返回分页响应,并允许前端通过查询参数指定某些分页行为(即:每页的帖子数和页码)。我们提供的另一个选项是允许字段过滤,让前端只指定特定请求所需的字段。但我同意上面的观点,你们可能会对此有很多意见。好的,伙计们,谢谢你们的见解。我将在几秒钟内删除这个问题,因为它是基于观点的。谢谢你的见解。事实上,我们正在做出回应。在我对30k对象的测试中,差异是可以忽略的,并且不能弥补格式上的混乱。正是因为如此广泛地使用JSON,密钥名被频繁重用,gzip使它们基本上是免费的!