任何已经使用 Grails 实现过类似功能的人都可以告诉我哪些是创建格式为“ http://www.myservice.com/username ”的用户配置文件 URL 的好做法(如果有的话),就像在 Facebook 中一样,推特,领英?
我正在尝试通过 UrlMappings 来实现它,在我看来,我需要打破代码约定,至少对于控制器而言。
所以,欢迎任何建议,谢谢。
更新 1
当我提到我对打破代码约定的担忧时,我的意思是我想使用此映射显示用户配置文件,但我的应用程序中确实有其他对象,我想使用默认映射访问它们:
"/$controller/$action?/$id?"()
解决方案
感谢我在这里收到的巨大贡献,我想出了这个解决方案,它解决了我的问题。
正如所指出的,要进行这种映射,我需要更密切地控制我的请求是如何处理的。这意味着我需要告诉 Grails 我不想将哪些控制器映射到“用户名”规则。
由于这将是一项非常乏味的任务(因为我有几个控制器),所以我这样做是为了使其自动化:
UrlMappings.groovy
static mappings = {
getGrailsApplication().controllerClasses.each{ controllerClass ->
"/${controllerClass.logicalPropertyName}/$action?/$id?"(controller: controllerClass.logicalPropertyName)
}
"/$username/$action?"(controller: "user", action: "profile")
}
...
}
当然,我需要在我的用户注册过程中做一些类似的事情,以避免用户名等于某个控制器名称。
就是这样,谢谢大家。