У меня есть реализация HAL в проекте grails rest-api.
Мне нужно изменить ссылки по умолчанию для получения HATEOS.
Класс My Domain:
@Linkable
class Province implements Serializable {
String name
String capital
Country country
static belongsTo = [country: Country]
static hasMany = [district: District]
static constraints = {
id composite: ['id', 'country']
}
}
Мой контроллер:
// @Override
def show(Integer country, Integer id){
// Province province = Province.findByIdAndCountry(id, Country.findById(country))
// province.link rel:'self', href: g.createLink(absolute: true, resource:"province", params:[countryId: country, provinceId: id])
respond Province.findByIdAndCountry(id, Country.findById(country))
}
Токовый выход:
{
"_links": {
"self": {
"href": "http://localhost:9002/province/show/1",
"hreflang": "en_US",
"type": "application/hal+json"
}
},
"id": 1,
"name": "Province One",
"capital": "Illam"
}
Но я хочу изменить href на что-то вроде этого:
"self": {
"href": "http://localhost:9002/province/{id}/{subId}",
"hreflang": "en_US",
"type": "application/hal+json"
}
В классе контроллераесли я изменяю на
def show(Integer country, Integer id){
Province province = Province.findByIdAndCountry(id, Country.findById(country))
province.link rel:'self', href: g.createLink(absolute: true, resource:"province", params:[countryId: country, provinceId: id])
respond province
}
, я получаю следующую ошибку:
Нет такого свойства: g для класса: core.restful.api.ProvinceController
Любое решение ??