变长嵌套路径的restapi设计
我需要为嵌套在一个或多个名称空间下的资源设计一个API 例如:变长嵌套路径的restapi设计,rest,api-design,Rest,Api Design,我需要为嵌套在一个或多个名称空间下的资源设计一个API 例如: / + | +--- namespace1 | +-------- namespace2 | +---------------- resource 其中我可能有0到N个名称空间 建议用什么方式来表示这种资源?我曾考虑过以下方法
/ +
|
+--- namespace1
|
+-------- namespace2
|
+---------------- resource
其中我可能有0到N个名称空间
建议用什么方式来表示这种资源?我曾考虑过以下方法:
GET /resources/namespace1/namespace2/resource
- 优点:我觉得这是最可读的
- 缺点:在OpenAPI(3.0)和一些框架DSL中,这种方法仍然存在一些问题。此外,名称空间位于“资源”下感觉有些不对劲
GET /resources/resource?context=/namespace1/namespace2
- 优点:易于在开放API和DSL中声明
- 缺点:在我看来,有点吵
GET /resources/resource
Context: /namespace1/namespace2
- 优点:易于在OpenAPI和DSL中声明,噪音小于#2
- 缺点:不确定我是否喜欢隐藏在标题中的名称空间
这看起来像是一个案例。REST并没有专门介绍这个案例。对于我来说,不清楚如何回答这个问题。您没有写任何关于资源和名称空间是如何关联的,或者是否希望使用RESTAPI管理这些关系的内容。只需提及,您的web资源和域实体之间不必有1:1的关系。您可以拥有比域实体少得多的web资源,这取决于您的RESTAPI想要支持什么。这更像是web资源*HTTP方法和操作之间的1:1关系。因此,首先我要澄清,如果我是你,我有什么行动。