我目前正在阅读和处理Scott Davis 和 Jason Rudolph 的 Grails 入门第二版中的示例。
本书是使用 Grails 1.2 编写的。
他们有一个代码示例,他们在其中创建了一个debug()
被调用的方法,beforeInterceptor
并解释说因为debug()
它是一个方法,所以它不会通过 URL 向用户公开。他们解释说,闭包作为控制器动作暴露给最终用户,但方法不是。
我还在Grails 1.3 文档中看到,它们提到了一个常规方法:
def auth() { ... }
被视为私有的,因为它是一种方法,而不是闭包。从 Grails 1.3 开始就是这样。
然而,从 Grails 2.0.0 开始,控制器动作可以实现为方法和闭包。
这让我想知道(并试图找出)一种方法来复制 Grails 2.0.0 之前的可用功能,即在控制器中创建一个不会暴露给最终用户的方法。
我想到了 2 种可能的方法,想知道哪种方式/实践更好,为什么?
- 将访问器设置为私有,即
private def auth()
将方法的 allowedMethods 设置为空字符串:
static allowedMethods = [save: "POST", update: "POST", delete: "POST", auth: ""]
这两种方法似乎都达到了预期的效果。但是,第一种方法给出了 HTTP 错误代码 404,而第二种方法给出了 HTTP 错误代码 405。
有谁知道哪种方法更可取?此外,还有其他方法或“最佳实践技术”吗?