前端 - 使用用户名作为路径的网站,怎么防止业务路径和用户名冲突?
问题描述:
以 Github 为例,用户主页的路径是 github.com/username,
我的疑惑时,用户名是用户自定义的,可以是合法的任何内容,怎么防止用户名和其他页面的路径冲突。
我想到的解决方案是提前将所有业务路径作为保留,当用户注册时,如果用户名和保留路径冲突,则提示用户名已存在。
但是怎么防止在未来的业务扩展时,出现和已有用户名冲突的情况?
第 1 个答案:
业务端和用户端使用不同的主机头区分不就可以了吗?
当然一些系统保留字还是需要保留起来的,并且提示用户用户名不可用。
比如用主机头,用户端 www.github.com
,业务端就可以是 api.github.com
等等
比如保留字的话,例如都叫 copilot
,用户端是 github.com/copilot
,业务端就变成了 github.com/features/copilot
。
注册时候如果想用 features
这个名字,就会有提示:Username 'features' is unavailable.
另外也可以用一些特殊符号来处理,比如说不允许用户名使用 下划线(_
) or 短横杠(-
) 之类的。那么业务端就可以使用 github.com/_assets/xxx
这种。
第 2 个答案:
其实有个很好的办法,就是给用户名添加前缀,比如/u/<username>
,或者/@<username>
。
微服务AppCity,实体类City城市微服务AppCountry,实体类Country国家在AppCountry的Service层中写一个接口package org.foo.bar.country. ...