我有一个经典数据模型,其中项目按层次树结构分类:
example.com/myanimals/pet/dog/{mydog_ID}
example.com/myanimals/pet/cat/{mycat_ID}
example.com/myanimals/birds/{mybirds_ID}
我希望公开一个可通过上述URL寻址的RESTful API。
如果我正在处理某个类别或项目,那么会有两种不同的行为。 我在java上使用RESTLet库,现在我的问题是:
另一个问题可能是,我必须解析 animals 之后的所有字符,然后测试最后一个元素是一个类别本身还是一个项目,最后用适当的方法处理资源representetion。这也意味着我有一个类别和项目的命名空间,我必须确保类别和项目具有唯一的名称。
更新
好吧最后我最终得到了这个设计:
/animals -> read all animals
GET /animals/categories/cat1/cat2 -> read all animals (as a list) and/or subcategories of cat2 (parameterized with query param)
/animals/name -> handle specific animal
/animals/categories -> read root categories
PUT/DELETE/POST /animals/categories/cat1/cat2 -> handle all subcategories of cat2
/animals/tags/tag -> read list of all animals labeled with this tag
上述解决方案似乎正确处理了这些问题,您只需要知道名称 categories 或 tags 的动物都不可寻址,因为这些是保留关键字。< / p>