RESTful子类型资源

zde*_*ine 5 rest

一个最佳实践问题。如果要设计RESTful接口,将如何区分子类型。例如,您的应用程序具有动物(每个动物都由其animalId标识),它们具有狗和鸟的子类型,其中每个子类型都有其特定的子资源。例如,狗的尾巴长而鸟的翅膀长(无论如何)。您会选择哪种方法(或者您有更好的想法)?

1)
/animals/{animalId}/tail-length (400 when animal is bird)
/animals/{animalId}/wings-length (400 when animal is dog)

2)
/dogs/{animalId}/tail-length
/birds/{animalId}/wings-length

3)
/animals?type=dog/{animalId}/tail-length
/animals?type=bird/{animalId}/wings-length
Run Code Online (Sandbox Code Playgroud)

abr*_*ham 4

假设不同子类之间不存在 ID 串通,我会推荐以下内容。

GET /animals/:id

有了这样的回应。(这个例子是 JSON,但也可以很容易地是 XML/等)

{
  "id": "xyz",
  "type": "dog",
  "tailLength" 400
}
Run Code Online (Sandbox Code Playgroud)

这使它保持简单和宁静。