Как настроить собственную ссылку в реализации HAL в Grails? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть реализация 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

Любое решение ??

...