【发布时间】:2019-10-11 17:23:54
【问题描述】:
similar question 有一个答案,但这对于一个例子来说太具体了,一般不会回答。
如果模型没有版本控制,任何人都可以告诉如何处理以下情况吗?
PUT /v1/users
username (string)
email (string) (required)
password (string) (required)
POST /v2/users
username (string) (required)
email (string) required
password (string) (required)
假设模型名称为 UserModel,在 v1 版本中用户名是可选的,但在 V2 中是必需的。
如果我们使用像 ajv 这样的模式验证器,即使 v1 api 请求也会失败,因为最新的规范/模型提到用户名是必填字段。
每个人都应该有充分的理由说不应该对模型进行版本控制,但我可能清楚地遗漏了一些东西。在这种情况下,对模型进行版本控制更有意义,因为它不会轻易破坏向后兼容性。
【问题讨论】:
-
该架构用于请求负载,而不是持久性模型。
-
我的模型是从 swagger 模式生成的。我想这也是怎么做的。它们确实依赖于创建模型的架构。
-
Transport 模型,也许,但如果你完全依赖数据库模式并且总是匹配 API 模式,那么这就是你会遇到的问题。
-
如果可能的话,你能分享一个例子吗?
-
我建议进行一些研究,这些通常称为数据传输对象 (DTO) 和数据访问对象 (DAO)。目前尚不清楚您认为编辑有什么好处。
标签: node.js express swagger versioning ajv