Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 哪一个更适合rails站点/{login}或/user/{login}_Ruby On Rails_Url_Namespaces_Friendly Url - Fatal编程技术网

Ruby on rails 哪一个更适合rails站点/{login}或/user/{login}

Ruby on rails 哪一个更适合rails站点/{login}或/user/{login},ruby-on-rails,url,namespaces,friendly-url,Ruby On Rails,Url,Namespaces,Friendly Url,以下哪一个更好(对于用户、寿命、性能,无论什么): http://{site}/{login}例如 或 http://{site}/user/{login} 前者的优点: 用户感觉更特别 URL较短 前者的缺点: 不能让用户的登录名与关键字匹配,并且关键字可能会随着时间的推移而增长 显然,这一点很重要,因为所有用户定义的URL都是基于它的。改变它似乎是自杀 缺点(尤其是随着时间的推移)是否超过优点?就个人而言,我会选择/user/{login} 使用/{login}感觉太像是弄乱了全局名

以下哪一个更好(对于用户、寿命、性能,无论什么):

http://{site}/{login}例如

http://{site}/user/{login}

前者的优点:

  • 用户感觉更特别
  • URL较短
前者的缺点:

  • 不能让用户的登录名与关键字匹配,并且关键字可能会随着时间的推移而增长
显然,这一点很重要,因为所有用户定义的URL都是基于它的。改变它似乎是自杀


缺点(尤其是随着时间的推移)是否超过优点?

就个人而言,我会选择/user/{login}


使用/{login}感觉太像是弄乱了全局名称空间,我们都知道全局名称空间很糟糕;)

我想说弊大于利,所以选择/user/login而不是/login。考虑STACKOPPORD,因为它也是MVC:我认为编程容易知道/in /Buff/BLAH中的每一个都将指向一个用户,而如果你不这样做,你就必须考虑每一种可能性。
例如,在site/foo中,foo可以是用户名、管理页面或其他一些关键字。如果你正确地把所有的东西都细分出来,那就容易得多了,所以你知道如果你看到站点/用户/FoO,它总是一个叫做Foo的用户。

< P>你可以考虑第三个选项:

在unix中,用单个字符(而不是目录)分隔用户

如果方便的话,这甚至会导致modrewrite为/user/username

然后你就有了简短的名字,很容易处理,而且你的普通页面都不会使用这个特殊字符


-Adam

允许用户在Web服务器根目录中创建任意名称有一个非常重要的问题(如果您使用/{login}而不是/user/{login},他们可以选择自己的登录名):有些名称具有特殊的魔法含义,这些含义由第三方定义。例如:

  • ,也被称为“机器人排除标准”,其次是所有表现良好的搜索引擎
  • ,它最初是一种Internet Explorer标准,后来被其他几种浏览器采用
  • 一些网站(至少是Google和IIRC Yahoo)利用您可以在Web服务器根目录中创建一个特别命名的文件这一事实来证明您是该网站的网站管理员,从而允许您访问一些额外的功能(如Google网站管理员工具)

还有其他几个;我听说过允许额外跨域访问的站点地图和文件,但我(或其他任何人)不可能知道所有这些。

从RESTful MVC中,我最后一次检查RESTful身份验证插件的示例是会话创建模式。因此,您不是登录用户,而是为用户创建会话。在这种情况下,
GET http://{site}/session/new
将显示登录屏幕,如果身份验证成功,
POST http://{site}/session
使用正确的参数将用户登录

然后,如果您愿意,可以为
http://{site}/login
创建一个新路由,该路由将重定向到
http://{site}/session/new
。类似地,
DELETE http://{site}/session
会让您注销