我有一个围绕这样的简单用户(grails)域类的RESTful API:
class User{
Long id
static constraints = {
}
}
我还为该用户建立了一个控制器类:
class UserController extends RestfulController {
static responseFormats = ['json', 'xml']
UserController() {
super(User)
}
}
Grails会为我生成所有“常规Crud终结点”,这很好,但是我想修改一个新的常规404错误,其用户ID可以作为路径变量(资源ID)找到,例如:
www.url/user/3
如果没有ID为3的用户,我想要这个json错误响应:
{"errorMessage":"user 3 not found"}
为此,我修改了404 gson视图:
response.status 404
json {
message "User ${request.PATHVARIABLE} not found."
error 404
}
这部分起作用,因为显示了我的自定义json消息,但是我无法在视图上访问path变量,我知道我可以访问请求,但是找不到返回该路径的有效方法该请求中的变量(下面示例中显示的PATHVARIABLE方法只是示例,而不是实际方法)。
我可以通过gson错误视图访问此ID吗?
更新: 在我看来,如果我尝试获取请求uri:
json {
uri request.uri
params params
message "User ${params.id} not found."
error 404
}
当我尝试获取不存在于/ user / 123的用户时,这是我的回答:
{
"uri": "/error",
"params": {
"parameterMap": {},
"empty": true
},
"message": "User null not found.",
"error": 404
}
为什么请求uri是/ error而不是我原来的请求uri?
答案 0 :(得分:1)
json视图将有一个params
对象,因此您可以执行以下操作:
json {
if (params.id) {
message "User ${params.id} not found."
} else {
message "Not found."
}
error 404
}