一般的に、それがallowedMethods
マップの目的です。generate-controller
またはgenerate-all
スクリプトを使用すると、コントローラーには次のようになります。
static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
また、POSTが必要なアクションと、GETを許可するアクションに応じて、アクション名をマップに追加したり、マップから削除したりできます。これを基本クラスに入れて、サブクラスが基本クラス定義を再利用し、次のアプローチで追加できるようにすることができます。
static allowedMethods = BaseController.allowedMethods + [createUser: "POST"]
そのためには、その基本クラスを拡張する必要があるため、忘れがちです。したがって、より良いアプローチはフィルターを使用することかもしれません。コマンドで作成できますcreate-filters
。
したがって、たとえば、許可しないアクションの明示的なリストを含む次のようなフィルターを使用できます。
def filters = {
postOnly(controller:'*', action: 'save|update|delete') {
before = {
if (!request.post) {
response.sendError(405)
return false
}
true
}
}
}
パイプで区切られたアクション名(コントローラー名にも同じことができます)に加えて、ワイルドカードを使用することもできるため、「create」で始まるアクションを追加できます。
postOnly(controller:'*', action: 'save|update|delete|create*') {