私は現在、Scott Davis&JasonRudolphによるGettingStarted with Grails、SecondEditionの例を読んで作業しています。
この本はGrails1.2を使用して書かれました。
彼らは、debug()
によって呼び出されるメソッドを作成するコードサンプルを持っており、はメソッドであるため、URLを介してユーザーに公開されないことbeforeInterceptor
を説明しています。debug()
彼らは、クロージャがコントローラアクションとしてエンドユーザーに公開されていると説明していますが、メソッドは公開されていません。
Grails 1.3のドキュメントでも見ましたが、通常の方法をほのめかしています。
def auth() { ... }
クロージャーではなくメソッドであるため、プライベートとして扱われます。これはGrails1.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が生成され、2番目のアプローチではHTTPエラーコード405が生成されます。
誰かがどちらのアプローチが好ましいか知っていますか?また、他のアプローチ、またはそうするための「ベストプラクティス手法」はありますか?