使用 CURIE 的 rel 可以用于项目的单个实例和这些相同项目的集合吗?

Can a rel that uses a CURIE be used for a single instance of an item and for a collection of those same items?

在我的 API 中,我有如下所示的 rels:

单个项目:

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

在另一个资源上,我有多个 activity-resource 实例。我应该如何表示呢?以下是否可以:

求合集:

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

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

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

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

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