假设我有一个应用程序,在该应用程序中我需要查看和编辑“文档”。我在考虑这个网址设计。
要提取ID为“x123”的文档的默认视图:
编辑同一文档:
删除
这更多来自于我在OO观点中将文档视为对象(例如“object.Action()”)。这是坏事吗?我会遇到麻烦吗?也就是说#s 2和3如下所示会更好吗?
1
http://domain/app/edit/document-x123
2
http://domain/app/delete/document-x123
答案 0 :(得分:3)
resource.action(id)
对我来说更自然......所以网址会是:
http://domain/app/documents/delete/x123
答案 1 :(得分:2)
我喜欢http://domain/app/document-x123/edit偏好。
参加livejournal:
http://jwz.livejournal.com/profile
http://jwz.livejournal.com/calendar
(抱歉jwz现在当人们谷歌你会出现这个。)
或者SO:
https://stackoverflow.com/users/208990/chris-simmons https://stackoverflow.com/users/208990?tab=activity#tab-top
或Twitter API:
http://apiwiki.twitter.com/Twitter-REST-API-Method:-POST-lists (http://api.twitter.com/1/ 用户 /lists.format)
对我来说,URL目录从“常规”变为特定。好的,我在stackoverflow.com。现在我正在缩小到“用户”。现在我选择了一个特定的用户。现在我正在看他的活动。
或者“我想访问twitter api。现在我想转移到特定用户。现在我想要他们的列表”。
所以我认为你的直觉很好,并且它与其他的intertubes所做的一致!
答案 2 :(得分:1)
正如qwerty所说,我喜欢资源的概念 - >行动 - > ID,但有关于两者的内容(以更加语义的方式)
如果你在公司的example.com上查看这个虚构的表单生成器的URL:
http://example.com/form/view/1
你最有可能把它分解为:
1) Use the Form Module
2) Use the View Module (or pass it as an action)
3) Pass the ID 1 to the module
我认为这个URL看起来好像是通过Form :: View模块传递数字1并获取数据。
现在,如果你看看这个其他想象的表单生成器:
http://example.com/form/1/view
您可以将其分解为此
1) Use the Form Module
2) Open up the data for ID 1
3) Preform the action 'view' on the ID 1
我认为此网址使您看起来正在打开ID 1的数据并对其执行预处理和操作。
我认为两者都同样有效,主要是在语义上。