(快速参考)

allowedMethods

目的

当使用错误的HTTP方法时,基于HTTP请求方法来限制对控制器操作的访问,并发送“方法不允许”错误代码

例子

 人控制器 {
    可以从POST调用动作
    动作没有限制
    可以从POST或DELETE中调用操作
    静态的allowedMethods行动:'开机自检',
                             行动:['开机自检', '删除']]
    定义 行动() { ... }
    定义 行动() { ... }
    定义 行动() { ... }
}

描述

allowedMethods属性提供一种简单的声明性语法,以指定您的控制器操作允许使用哪些HTTP方法。默认情况下,所有控制器操作都允许使用所有请求方法。allowedMethods属性是可选的,仅当控制器具有限制为某些请求方法的操作时才需要定义

您可以在控制器动作中以编程方式进行这些检查,然后自己发送错误代码,但这会使控制器方法变得混乱,应将重点放在应用程序逻辑和路由上,这种方法在更复杂的情况下可能不够用,在这种情况下还可以自己处理事情

allowedMethodsproperty是一个Map,其中的键是要限制的操作的名称,其值可以是或一个清单如果值为它代表可用于调用该操作的唯一请求方法(如果它是一个清单它代表可用于调用该动作的所有请求方法。如果违反了指定的限制,则响应中将返回错误代码

例如,此代码可防止使用HTTP GET调用操作

 人控制器 {
    定义 () {
        如果请求方法'得到') {
            重定向到列表动作重新导向行动清单其他 {
            其余删除操作在此处
        }
    }
}

它可能会返回错误代码,而不是重定向

 人控制器 {
    定义 () {
        如果请求方法'得到'响应sendError405)
        } 其他 {
            其余删除操作在此处
        }
    }
}

但是最干净的解决方案是使用allowedMethods:

 人控制器 {

    静态的allowedMethods: "开机自检", 更新: "开机自检", : "开机自检"]

    定义 () {
        删除逻辑在这里
    }
}