URL结构最佳实践/标准

URL结构最佳实践/标准,url,url-design,Url,Url Design,我正在构建一个包含项目的网站,每个项目都有一个页面,例如: website.com/book/123 website.com/film/456 website.com/game/789 website.com/film/456/gallery 每个项目可以有多个子(和子子子,子子子子)页面,例如一本书可以有一个简介,一部电影可以有一个图库,一个游戏也可以有一个图库 我的问题是,是否有任何标准或最佳实践存在于与项目相关联的页面的URL结构中?例如: website.com/book/123 w

我正在构建一个包含项目的网站,每个项目都有一个页面,例如:

website.com/book/123
website.com/film/456
website.com/game/789
website.com/film/456/gallery
每个项目可以有多个子(和子子子,子子子子)页面,例如一本书可以有一个简介,一部电影可以有一个图库,一个游戏也可以有一个图库

我的问题是,是否有任何标准或最佳实践存在于与项目相关联的页面的URL结构中?例如:

website.com/book/123
website.com/film/456
website.com/game/789
website.com/film/456/gallery
其中子页面位于项目之后,或:

website.com/film/gallery/456/
其中项目是URL的最后一部分

有没有人知道为什么哪种方法最好,或者是否存在任何web标准?这似乎是一件显而易见的事情,但我很难做出决定,我能想到每种方法的利弊——尽管我倾向于前一种选择,因为这意味着以下用户路径将与URL匹配:

加载website.com->点击“电影”(website.com/films)->点击“电影”(website.com/film/123)->点击画廊(website.com/film/123/gallery)


但似乎有点。。。关闭,可能不一致。

您是正确的,前一个URL“更好”,部署更广泛。我认为你不会在任何标准中发现这一点;这更像是一种惯例。大多数涉及REST的文章和书籍都是这样做的

原因是,正如您所说,URL中的路径组件与资源和子资源的结构相匹配。特别是,以下所有内容都应为有效URL:

  • 网站/
  • 网址:www.com/books
  • 网址:www.com/books/123
特别要注意的是,它是
book/123
而不是像您这样的
book/123
。我见过单数形式,但我认为复数形式更好

对于URL
/books

  • GET获取所有书籍,但您可以使用查询参数限制书籍,例如
    /books?author=alice
  • 帖子添加一本新书(带有服务器生成的id)
用于URL
/books/123

  • a得到那本书
  • PUT使用该id替换书本(或使用客户端生成的id添加书本)
现在,如果一本书有模糊,并且模糊仅对特定的书是唯一的,那么您将添加以下URL:

  • website.com/books/123/blurbs
  • website.com/books/123/blurbs/72
您可以对电影和画廊执行相同的操作,前提是每个画廊都属于一部电影。但是如果存在多部电影的图库,那么您可以将
/galleries
设置为顶级URL。从一部电影导航到一家画廊还是可以的。你不会有一个结构化的URL。相反,您可以通过get-to获得包含电影456中图片的所有画廊

  • 网址:www.com/gallers?film=456
一般规则是,如果子资源具有所有权关系,则可以使用结构化URL,但如果顶级项之间的关系较松散,则查询参数也可以。不要误会RESTful URL没有查询参数;是的

最后,直接回答你的问题:
website.com/films/galleries/456
不是一个好的URL,因为
`website.com/films/galleries/
不是很有用。事实上,我认为它相当丑陋。这意味着什么?所有画廊?如果是这样,它应该是
website.com/galleries


同样,我不认为这在任何地方都是标准化的,但它感觉非常普通和传统。

非常好的解释,非常有用,非常感谢。谢谢:-)