【发布时间】:2022-07-11 23:48:51
【问题描述】:
这里的资源是一个 Log 类型,它将创建 5 个不同的记录,一个用于天气、位置等...它们都将共享关联。
据我了解,约定是为每个资源创建一个帖子,但如果这些资源需要其他记录的外键,我不知道如何跟踪创建的与该资源相关的记录的所有 ID记录。
现在,我正在发送在单个请求中创建所有资源所需的所有数据,如果出现错误,则不会创建任何数据,因为我会使用事务。这是约定吗?
【问题讨论】:
这里的资源是一个 Log 类型,它将创建 5 个不同的记录,一个用于天气、位置等...它们都将共享关联。
据我了解,约定是为每个资源创建一个帖子,但如果这些资源需要其他记录的外键,我不知道如何跟踪创建的与该资源相关的记录的所有 ID记录。
现在,我正在发送在单个请求中创建所有资源所需的所有数据,如果出现错误,则不会创建任何数据,因为我会使用事务。这是约定吗?
【问题讨论】:
惯例是为每个资源创建一个帖子
当您有一个简单的模型时,当一个对象受到一个用户操作的影响时,此约定非常有用。该模型非常普遍,并且在每本 REST 书籍/文章中都有实现。
现实更复杂,你的问题就是一个很好的例子。 为每个表实现 PUBLIC API 是众所周知的,不幸的是,反模式被广泛传播:
https://martinfowler.com/bliki/AnemicDomainModel.html
经验法则,围绕您的业务问题构建解决方案,而不是围绕技术框架或模式。
现在我正在发送创建所有资源所需的所有数据 在一个请求中
这听起来是一个很好的解决方案。一项业务操作 -> 一项 API 调用 -> 一项数据库事务。它既好又简单。如果没有必要,不要让它变得更复杂。
【讨论】: