0

在我的 API 中,我的 rel 看起来像这样:

对于单个项目

{
    ...
    _links: {
        ...,
        "api:activities/activity-resource": {
            "href": "..."
        }
    }
}

在另一个资源上,我有多个activity-resource. 我应该如何表示这一点?以下是否可以:

对于一个集合

{
    ...
    _links: {
        ...,
        "api:activities/activity-resource": [{
            "href": "..."
        }, {
            "href": "..."
        }]
    }
}

这有点道理,因为它们仍然是 的实例activity-resource,并且人们可以查看文档以获取有关如何处理这些资源的信息。但是,现在我的 API 有点不一致,因为在某些表示中api:activities/activity-resourcerel 指向单个实例,而在其他表示中它指向一个集合。

我可以论证开发人员可以从 API 文档中弄清楚他/她需要做什么,但它也有助于拥有一致的 API。

4

1 回答 1

1

在实践中,我在 HAL 规范中遇到了同样的弱点。完全符合要求的客户端会将 rel : {} 格式视为 rel : [{}] 的简写,因此从资源实例切换到实例应该没什么大不了的。

但鉴于许多 HAL 消费者只是将 hal+json 视为直接 json(完全忽略 HAL 语义),这令人担忧。我正在与一些假设 rel : {} 暗示是 N 对 1 或 1 对 1 关系的开发人员合作..但事实并非如此。有一次,我决定我们应该始终使用 rel : [{}] 语法,如果 rel 可能永远大于 1 作为对消费者的提示。因此,我们认为这些 rel 多重性的变化会破坏兼容性,并支持新的 rel 而不是将单个 rel 提升为多重,因为这是向后兼容的……然后我们在下一个主要版本中进行整合。

于 2015-02-05T05:01:10.937 回答