给定REST端点的设置,例如保存用户,是否可以使用命令对象的validate()
来获取特定的HTTP错误代码,该代码可以返回控制器处理响应?从Grails命令返回特定的HTTP错误代码对象验证
我想避免控制器操作必须处理大量if
块的情况,以检查特定的错误消息,并执行查找/将其转换为HTTP错误代码。
例如,我想让自定义验证程序以某种方式告诉控制器返回404,如果它无法在数据库中找到匹配的用户。
以下不是我所尝试过的。相反,它只是我想用于验证REST参数的理想结构的一个概念证明。也许这是完全错误的,或者有更好的方法。如果有的话,那也是值得欢迎的。
如:
User.groovy
...
class User {
String username
static constraints = {
username unique:true
}
}
UserController.groovy
...
class UserController extends RestfulController {
def update(UserCommand userCmd) {
/*
* Not actually working code, but proof of concept of what
* I'm trying to achieve
*/
render status: userCmd.validate()
}
class UserCommand {
Long id
String username
static constraints = {
importFrom User
/*
* I also get that you can't return Error codes via the
* custom validator, but also just to illustrate what I'm
* trying to achieve
*/
id validator: {
User user = User.get(id)
if(user == null) {
return 404
}
}
}
}
}
谢谢,我的意思是更新。这看起来很有希望 –
你能解释一下,或者指点我的一些文档来解释'withUser'方法中的'id =“id”'参数吗?我不知道我害怕什么。 –
这只是一个可以覆盖的变量。所以如果你想通过一个不同的参数来查找一个对象,你将它作为id传入,而不是默认的“id”。 – Gregg