Node.js 成形API端点和响应

Node.js 成形API端点和响应,node.js,data-structures,Node.js,Data Structures,你好,Stackoverflow, 我现在编写API已经有相当一段时间了,现在它开始与这些更大的API一起工作。我开始想知道如何塑造这个API,因为我在更大的平台上看到过很多次,一个大实体(例如商店中的产品页面)被单独加载(我们可以看到条目主体被加载,但注释仍然在获取等) 通常我所做的是在SQL查询中将注释作为关系附加,因此我的前端查询单个API端点,如: http://api.example.com/items/:id 它还返回了所有必要的数据,如卖家信息、照片等 从逻辑上讲,卖家信息和照片

你好,Stackoverflow,

我现在编写API已经有相当一段时间了,现在它开始与这些更大的API一起工作。我开始想知道如何塑造这个API,因为我在更大的平台上看到过很多次,一个大实体(例如商店中的产品页面)被单独加载(我们可以看到条目主体被加载,但注释仍然在获取等)

通常我所做的是在SQL查询中将注释作为关系附加,因此我的前端查询单个API端点,如:

http://api.example.com/items/:id
它还返回了所有必要的数据,如卖家信息、照片等

从逻辑上讲,卖家信息和照片都是很小的数据(例如,物品只能有一个卖家,最多只能有10张照片),但评论的数量可能要比关系(评论作者)的集合大得多

将一个端点分成两个独立的端点是否有意义,如:

http://api.example.com/items/:id
http://api.example.com/items/:id/comments
这种方法的缺点是什么?这是惯例吗?或者我误解了一些概念

一个缺点可能是执行了2个请求,但另一方面,第一个端点应该更快地返回数据(因为它比获取n条注释要轻),所以页面可能显示得更快,并且显示注释部分的微调器。这样我也可以对评论进行分页


端点分离是否有任何改进?或者我完全错了,应该用完全不同的方法来做?

我认为如果:

  • 一个项目的注释数量可能很大,因为使用这种方法可以更容易地分页

  • 如果您需要访问一个项目的注释,而不需要其他项目信息

我认为之前的任何条件都证明了这一决定的合理性,是的,这是一种常见的做法