给定API蓝图资源模型,如何确保资源的只读部分不可更新?

时间:2014-07-02 00:36:38

标签: apiblueprint

我有一个大型模型,我在资源上用于GET和PUT。 该模型包括一个“审计”对象,如:

            "audit": {
                "createdAt": "2014-04-14T02:15:15Z",
                "lastUpdatedAt": "2014-04-14T02:15:15Z",
                "deletedAt": ""
            }

这显然只是资源的一部分 - 有没有办法在合同模型中显示这一点,因此“审计”出现在GET响应表示中而不是PUT请求表示中?

我能看到的唯一选择是将模型复制到PUT的主体中并删除只读部分 - 但这样就消除了使用可以在不同方法中重用的单个模型的好处。

1 个答案:

答案 0 :(得分:1)

这还不可能。当前资源模型的能力非常有限。它与Apiary: Refer to multiple models in a bodyReuse a resource model as an array类似。

有计划解决这一需求并在未来使蓝图更加干燥 - 请参阅Embedded AssetsTraits里程碑。

解决方案是复制&粘贴,或者,在您的特定情况下,不要在GET和PUT中返回不同的有效负载。你为什么这样做?