У меня есть RESTful api, построенный вокруг простого класса домена пользователя (grails), подобного этому:
class User{
Long id
static constraints = {
}
}
И я также создал класс контроллера для этого пользователя:
class UserController extends RestfulController {
static responseFormats = ['json', 'xml']
UserController() {
super(User)
}
}
Grails генерирует для меня все "обычные конечные точки crud", что приятно, но я хочу изменить обычную ошибку 404 на новую с идентификатором пользователя, который можно найти, например, в качестве переменной пути (идентификатора ресурса) :
www.url/user/3
Если нет пользователя с идентификатором 3, я хочу получить ответ об ошибке json:
{"errorMessage":"user 3 not found"}
Для этого я изменил представление 404 гсона:
response.status 404
json {
message "User ${request.PATHVARIABLE} not found."
error 404
}
Это частично работает, потому что мое собственное сообщение json отображается, но мне не удается получить доступ к переменной пути в представлении, я знаю, что могу получить доступ к запросу, но я не могу найти действительный метод, который возвращает путь переменная по этому запросу (метод PATHVARIABLE, показанный в примере ниже, это просто пример, а не реальный метод).
Могу ли я как-то получить доступ к этому идентификатору из представления ошибок gson?
UPDATE:
на мой взгляд, если я попытаюсь получить запрос 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 запроса / ошибка вместо моего исходного URI запроса?