我想设计一个 RESTful URL 来选择具有特定类别的设计师。
这是我的域关系:
designer <-> product <-> category
我想到了两种方法:
- 首先,仅使用 URI 路径:
/categories/{id}/products/designers
- 其次,使用查询字符串:
/designers/?categoryId={id}
我想知道什么更好。
我想设计一个 RESTful URL 来选择具有特定类别的设计师。
这是我的域关系:
designer <-> product <-> category
我想到了两种方法:
/categories/{id}/products/designers
/designers/?categoryId={id}
我想知道什么更好。
我主要打算写一个评论,但它太长了,所以我写了一个答案。
我想设计一个 RESTful URL 来选择具有特定类别的设计师。
没有RESTful URL之类的东西:这是一个错误的技术术语,似乎源于 URI 应该有意义并在 REST 应用程序中向客户端表达语义的想法。这是一个误解。
Roy T. Fielding 在其论文的第 5 章中定义了 REST 架构风格。本文档定义了一组遵循此类架构的应用程序必须遵循的约束,并且它不强制执行任何 URI 设计。
然而,在设计 REST API 时,在 URI 中使用名词而不是动词是一种常见的方法:REST 旨在围绕资源进行设计,这些资源是根据 HTTP 方法的语义使用表示进行操作的。虽然用户友好的 URI 可能是可取的,但从 REST 架构风格的角度来看,它们绝不是强制性的。URI 本身不会使 API 或多或少 RESTful。
话虽如此,如果存在RESTful URL之类的东西,非 RESTful URL 是什么样的?
我想知道什么更好。
这个问题的答案往往几乎完全基于意见,而不是事实、参考资料或特定专业知识。你将从这一点读到的是我的个人观点。
假设您打算使用用户友好、面向资源且易于记忆的 URI,我将使用/designers?categoryId={id}
: 它表示将其映射到设计/designers
器资源的集合,并且可以使用categoryId
查询参数过滤此类集合。