2011-09-18 38 views
0

我知道那些URI是好的SEO明智的,但它们是RESTful吗?
我的直觉是他们不是,但我正在寻找验证。
我认为它们不是RESTful的原因是因为年份,月份和日期是查询的参数,而slug实际上是标识符。
是博客/ posts/slug?year = 2011 & month = 9 & day = 19这里有更好的方法吗?
我不确定这件事。Blog/posts/year/month/day/slug是一个RESTful URI方案吗?

+0

没有REST风格或非REST风格的URL。这是一个完全错误的约束,我相信它来自过时的和被替换的URI规范中的单行。 –

回答

3

你的所有帖子错过了这一点。你担心REST不关心的事情。只要客户从超文本获得URL而不是根据方案自行构建它们,任何一个方案都可以。 Please read this article about this type of misunderstanding

+3

是的。而且,HTTP URI的路径组件在定义上是分层的。如果年/年和年/月和年/月/日也是有意义的资源标识符,则年/月/日/塞尔格更有意义。 – fumanchu

-1

blog/posts/year/month/day不是资源标识符。没有一个使感官反正

所以,你想要的是像

mysite.com/posts/<id>

或者,如果你想查看某一天

mysite.com/posts?filter=2011/9/19

+1

任何建设性的批评? – Raynos

+3

我不是downvoter,但你的第一个陈述是不正确的。这是一个完全有效的资源标识符。第一个URI很可能会识别在特定日期发布的博客帖子列表。在路径段中使用年份月份是完全有效的,因为它是自然的层次结构。任何人都不可能想要一个二月二号的所有帖子的列表,而不管一年。你使用查询字符串的例子也是一个有效的方法,也是我会采取的方法。 –

+0

@达雷尔米勒。 meh资源'posts'不包含'year'。资源“year”不包含“月”。等等。我认为它的URI滥用 – Raynos

0

您应该将URL标识在其标识的资源上,而不是使用在服务器后端用于生成资源的方法。

因此,您的计划可以很好地识别博客帖子。

REST原则并不太关心如何识别资源,只是动词不应该在资源标识符中,因此GetBlogPost?year=2011&month=9&day=19将是一个非RESTful URI的示例。