我目前正在开发Node / Express / MongoDB Restful Service。 现在,由于MongoDB没有"列",很容易发生同一端点的响应可以包含特定属性。 e.g。
# GET /users/1
{"name": "Alexander", "nickname": "Alex"}
# GET /users/2
{"name": "Simon"}
虽然使用像JavaScript这样的弱类型语言来处理没有任何区别,但是我的一个同事在C#中实现了一个客户端,但在缺少属性时很难解析JSON字符串。
IMO,从API的角度来看,目前的方法更好,因为它会在服务器端产生更好的性能,更少的代码甚至流量。否则,我需要在每次添加属性时发送甚至运行迁移之前规范化对象。它也没有发送"虚拟"资源上甚至不存在的数据。
但另一方面,我也希望从客户的角度构建一个可靠的服务,并且#34;规范化"在客户端方面至少和服务器端一样糟糕。
Theres也是另一个用例,它在JS中运行良好但会导致C#出现问题并引发同样的问题:
# GET /users/1/holidays
{
"2018-12-25": { "title": "Christmas" },
"2019-01-01": { "title": "New Year" }
}
我采用这种方法自动阻止同一天的多个条目。但我能理解这是否真的被认为是不好的做法。
由@ jfriend00评论,第二个例子并不那么方便。所以我不再使用它了。