Параметрические имена действий в grails urlMappings

Я пытаюсь отобразить JSON API для моего контроллера, как:

/ 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()}"]}
    }

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

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 пока позволяет только такой конфигурации быть статичной. Может быть, кто-нибудь мог бы покопаться в исходном коде, чтобы узнать позже.

Другие вопросы по тегам