你如何构建你的URL路径?(How do you structure your URL routes

2019-07-30 23:02发布

是否有一个特定的模式,开发商普遍遵循? 我从来没有真正赋予它太多心思在之前我的web应用程序,但你至少把它考虑到ASP.NET MVC路由引擎相当多的力量。

到目前为止,我喜欢的控制器/动作/索引结构(如产品/编辑/ 1),但我更复杂的URL挣扎。

举例来说,假设你有一个页面,列出了所有用户在他们的帐户中的产品。 你会怎么做呢? 关闭我的头顶,我能想到的一个列表网页和编辑网页以下几种可能:

  1. 用户/ {用户ID} /产品/列表,用户/ {用户ID} /产品/编辑/ {产品ID}
  2. 用户/ {用户ID} /产品,用户/ {用户ID} /产品/ {产品ID}
  3. 产品?用户名= {用户ID},产品/编辑/ {产品ID}

我敢肯定有很多人说我失踪的。 有什么建议?

Answer 1:

我喜欢RESTful的,用户友好的和破解的网址。

这是什么意思? 让我们开始与用户友好的URL。 对我来说,一个用户友好的URL是什么容易输入易记/Default.aspx?action=show&userID=140不符合上述任何要求。 像`/用户的URL / troethom'似乎是合乎逻辑不过。

这引出了下一个点。 一个破解的URL的是,用户可以修改,仍然可以得到带有结果的URL。 如果URL是容易被破解和我的个人资料的网址是/users/troethom这将是安全地删除我的用户名来获取用户(列表/users )。

使用RESTful URL是非常相似的背后我的其他建议的想法。 你正在设计的URL的用户,而不是一台机器,因此URL必须涉及到的内容和你的网站而不是技术的后端。 作为一个URL'/ users'使得超过意义上的“/用户/ list'和URL为”/类别/编程/ javascript'(代表子类别'类别中的“程序”优于'/分类/显示的JavaScript / 12'。

这的确是比较难省略ID,但在我的世界里它是值得的。

还请参阅认识的URI部分上W3C's常见的HTTP执行问题。 它在设计时的URI常见陷阱的列表。 另一个很好的资源是足智多谋Vs的破解的搜索网址 。



Answer 2:

你可能想看看这个问题:“ 友好的URL方案? ”。

特别是, Larry.Smithmier的答案在ASP.NET MVC使用时提供了常见的URL方案的列表。



Answer 3:

此外,您可以考虑使用不同的动词来重复使用不同的动作相同的路线。 例如,GET请求“产品/编辑/ 45”将显示在产品编辑器,而张贴到相同的URL会更新产品。 您可以使用AcceptVerb属性来实现:

[AcceptVerb("GET")]
public ActionResult Edit(int id)
{
    ViewData["Product"] = _products.Get(id);
    return View();
}

[AcceptVerb("POST")]
public ActionResult Edit(int id, string title, string description)
{
    _products.Update(id, title, description);
    TempData["Message"] = "Changes saved successfully!";

    return RedirectToAction("Edit", new { id });
}


Answer 4:

比尔德霍拉写了一篇很好的作文题目的Web资源映射标准的框架 ,非常值得一读。



Answer 5:

为了增加troethom的意见,基于REST通常也意味着,例如,去创造你会放一个代表到/用户/ newusername新用户

的RESTful基本上使用用于控制/访问内容的5种标准HTTP方法(GET,PUT,POST,DELETE,HEAD)。

好吧,这是不容易的Web浏览器,但你可以随时使用重载后(POST到/用户/用户名与用户的表示,以改变一些细节,等等。

其做事的一个很好的方式,我会reccommend读RESTful Web服务 ,以获得更好的理解:d(这是一个不错的书!)



Answer 6:

我见过的两个主要接受的方式来处理这个话题...

在一个被描述MvcContrib项目文档

另一种是在描述由斯蒂芬·瓦尔特的博客文章 (我个人比较喜欢)。



文章来源: How do you structure your URL routes?