Имена параметрических действий в grails urlMappings

Я пытаюсь сопоставить API JSON с моим контроллером, например:

/api/user/1/location GET --> Controller.getLocation()

/api/user/1/location POST --> Controller.setLocation()

Я безуспешно пробовал следующее правило сопоставления URL-адресов:

    "/api/$controller/$id/$property" {
        action = {[GET: "get${params.property.capitalize()}", POST: "set${params.property.capitalize()}"]}
    }

Кто-нибудь пробовал что-то подобное


person Bahadır Yağan    schedule 26.12.2012    source источник


Ответы (1)


Я пробовал и преуспел в обоих:

"/api/$controller/$id/$property"{
     action = {"get"+params.property.capitalize()}            //put all joint into the {} bracelet
}

и

"/api/$controller/$id/$property"{
     action = [GET: "getLocation", POST:"setLocation"]         //remove the {} bracelet
}

но не удалось назначить динамические параметры в карту [GET:'',POST:''], например:

"/api/$controller/$id/$property"{
     action = {["POST": "set"+params.property.capitalize(), "GET": "get"+params.property.capitalize()]}
}

и

"/api/$controller/$id/$property"{
     action = [POST: {"set"+params.property.capitalize()}, GET: {"get"+params.property.capitalize()}]
}

оба выдавали ошибку 404.

Поэтому я предполагаю, что Grails пока позволяет только такую ​​конфигурацию быть статической. Может быть, кто-то мог бы копаться в исходном коде, чтобы узнать позже.

person coderLMN    schedule 26.12.2012