是否有一个特定的模式,开发商普遍遵循? 我从来没有真正赋予它太多心思在之前我的web应用程序,但你至少把它考虑到ASP.NET MVC路由引擎相当多的力量。
到目前为止,我喜欢的控制器/动作/索引结构(如产品/编辑/ 1),但我更复杂的URL挣扎。
举例来说,假设你有一个页面,列出了所有用户在他们的帐户中的产品。 你会怎么做呢? 关闭我的头顶,我能想到的一个列表网页和编辑网页以下几种可能:
- 用户/ {用户ID} /产品/列表,用户/ {用户ID} /产品/编辑/ {产品ID}
- 用户/ {用户ID} /产品,用户/ {用户ID} /产品/ {产品ID}
- 产品?用户名= {用户ID},产品/编辑/ {产品ID}
我敢肯定有很多人说我失踪的。 有什么建议?
我喜欢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的破解的搜索网址 。
你可能想看看这个问题:“ 友好的URL方案? ”。
特别是, Larry.Smithmier的答案在ASP.NET MVC使用时提供了常见的URL方案的列表。
此外,您可以考虑使用不同的动词来重复使用不同的动作相同的路线。 例如,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 });
}
比尔德霍拉写了一篇很好的作文题目的Web资源映射标准的框架 ,非常值得一读。
为了增加troethom的意见,基于REST通常也意味着,例如,去创造你会放一个代表到/用户/ newusername新用户
的RESTful基本上使用用于控制/访问内容的5种标准HTTP方法(GET,PUT,POST,DELETE,HEAD)。
好吧,这是不容易的Web浏览器,但你可以随时使用重载后(POST到/用户/用户名与用户的表示,以改变一些细节,等等。
其做事的一个很好的方式,我会reccommend读RESTful Web服务 ,以获得更好的理解:d(这是一个不错的书!)
我见过的两个主要接受的方式来处理这个话题...
在一个被描述MvcContrib项目文档
另一种是在描述由斯蒂芬·瓦尔特的博客文章 (我个人比较喜欢)。