我想设计一个RESTful URL,以选择具有特定类别的设计器。
这是我的域关系:
designer <-> product <-> category
我想到了两种方法:
/categories/{id}/products/designers
/designers/?categoryId={id}
我想知道什么更好。
答案 0 :(得分:2)
我本来打算写评论,但是因为时间太长,所以我写了一个答案。
我想设计一个RESTful URL,以选择具有特定类别的设计器。
没有 RESTful URL 这样的东西:这是一个错误的技术术语,似乎源于URI应该有意义并且在REST应用程序中向客户端表达语义的想法。 这是一个误解。
Roy T. Fielding在其论文的chapter 5中定义了REST体系结构样式。该文档定义了一组约束,遵循该体系结构的应用程序必须遵循这些约束,并且它不强制执行任何URI设计。
但是,在设计REST API时,在URI中使用名词代替动词是一种常见的方法:REST的设计应围绕resources进行,使用{ HTTP方法的语义。尽管可能需要用户友好的URI,但从REST体系结构样式的角度来看,它们绝不是必需的。 URI本身不会使API或多或少具有RESTful。
已经说过,如果存在 RESTful URL 之类的东西,那么非RESTful URL会是什么样?
我想知道什么更好。
该问题的答案通常几乎完全基于观点,而不是事实,参考或特定的专业知识。从这一点上您会读到的是我的个人观点。
假设您打算使用用户友好,面向资源且易于记忆的URI,我将使用/designers?categoryId={id}
:它表示 designer 资源的集合是将其映射到/designers
,可以使用categoryId
查询参数过滤该集合。