RESTful语法。是渴望/懒惰还是两者兼而有之?

RESTful语法。是渴望/懒惰还是两者兼而有之?,rest,architecture,restful-url,Rest,Architecture,Restful Url,我试图遵循RESTful原则,但对如何设置“急切”或“懒惰”端点有点困惑 例如,a 这家商店有很多产品 产品有很多成分。 产品有多种包装 当然,一个“坏”的端点可能是: api/shop/1 将返回店铺id 1的详细信息,但同时返回: 所有产品 所有产品的成分 全部产品的包装 这当然是一个疯狂的模型……所以我只能猜测RESTful在默认情况下是“总是懒惰的” 但是“懒惰默认”说你想得到10种不同的产品和它们的成分 api/shop/1/product/1/ingredients api/sho

我试图遵循RESTful原则,但对如何设置“急切”或“懒惰”端点有点困惑

例如,a
这家商店有很多产品
产品有很多成分。
产品有多种包装

当然,一个“坏”的端点可能是:

api/shop/1
将返回店铺id 1的详细信息,但同时返回:
所有产品

所有产品的成分
全部产品的包装

这当然是一个疯狂的模型……所以我只能猜测RESTful在默认情况下是“总是懒惰的”

但是“懒惰默认”说你想得到10种不同的产品和它们的成分

api/shop/1/product/1/ingredients
api/shop/1/product/2/ingredients
api/shop/1/product/3/ingredients
请求的数量有点高…10个产品有10个单独的HTTP请求

最后,您是否倾向于根据前端/消费者可能想要的内容来设计RESTful端点,而不是对业务/数据库进行建模

api/shop/1/product-details?productId=1,2,3,4,5,6,7,8,9,10
以上是严格意义上的“宁静”吗

所以我想真正的潜在问题是:
RESTfulAPI设计是数据模型还是视图模型

RESTfulAPI设计是数据模型还是视图模型

视图更接近——这是一个资源模型

你的数据模型不是你的对象模型不是你的资源模型不是你的供给模型。-

最简单的类比是查看HTML页面中的java脚本

  • 我们可以在HTML页面中嵌入java脚本
  • 我们可以从HTML页面链接到java脚本
这两种方法都有效——它们有不同的权衡,主要是在缓存的工作方式上

粗粒度资源在某种程度上类似于;在一个请求/响应中交换一个大型表示,然后客户机可以用这个表示做很多不同的事情

细粒度资源使您能够更好地控制缓存策略(不同的部分可能在不同的时间过期),并且可能更好地响应我们期望客户机将这些资源的编辑表示发送回的场景

细粒度资源的一个问题是往返的额外负担。HTTP/2改进了这种情况,因为它可以用于将多个资源的表示链接到一个响应上——所有细粒度资源都可以在一次突发中发送

但即便如此,我们谈论的是识别资源,而不是数据库实体

https://stackoverflow.com/questions/57420131/restful-syntax-is-it-eager-lazy-or-both
这是关于问题的网页的标识符

https://api.stackexchange.com/2.2/questions/57420131?site=stackoverflow
这是描述同一问题的不同资源

RESTAPI并不是关于通过HTTP公开数据模型,而是关于交换文档,以便客户机能够导航协议,从而完成有用的工作。看