【发布时间】:2016-09-20 12:55:24
【问题描述】:
给定一个 REST 端点的设置,例如保存一个用户,是否可以使用命令对象的 validate() 来获取特定的 HTTP 错误代码,这些代码可以返回给控制器以处理响应?
我想避免控制器操作必须处理大量 if 块、检查特定错误消息并进行查找/将其转换为 HTTP 错误代码的情况。
例如,如果在数据库中找不到匹配的用户,我希望自定义验证器以某种方式告诉控制器返回 404。
以下不是我尝试过的。相反,它只是我想用于验证 REST 参数的理想结构的概念证明。也许这是完全错误的,或者有更好的方法。如果有,那也很受欢迎。
例如:
用户.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
}
}
}
}
}
【问题讨论】:
标签: rest validation grails