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