REST - 资源的可寻址性(组合、集合)

REST - Addressability of resources (Composition, Collection)

我正在设计 REST-API,目前我遇到了以下问题。例如我得到以下结构:

/foods/fruits/{fruit}
/foods/meat/{meat}

例如:

/foods/fruits/apple
/foods/fruits/pineapple
/foods/meat/chicken

每个端点都是唯一的 (only one apple, one chicken),但可以存在不同种类的 fruits(例如菠萝)。 但是我的 service 需要 return

通过这种设计,我的资源可寻址大约 3 URIscomposition, collection, endpoint),但最大值应该是 2。 这是restful设计吗?

查看 Richardson Maturity Model,您可以拥有一个通用的 Food 资源和端点,具有类型和名称等属性,然后您的需求可以像这样访问:

  • GET /api/food?name=apple
  • GET /api/food?type=fruit
  • GET /api/food

With this design my ressource is addressable about 3 URIs (composition, collection, endpoint), but it should be a maxima of 2. It this a restful design?

您能否提供一个最大值应为 2 的指南参考?

但无论哪种方式 - 这三个 URI 不是同一资源的 3 个不同 URI,它们是三个不同的资源:

  1. 食物资源
  2. 特定类型食物的集合
  3. 一种特定类型的食物

虽然早期的资源可以被认为是由其他资源组成的,但这并不意味着最好的颗粒(特定类型,例如苹果)可以通过 3 个 URI 寻址。

如果您使用的是 HAL 等超媒体格式,您的组合表示可以利用 嵌入式 资源,这清楚地说明了所包含的资源也可以直接通过它们获得自己的端点。