2012-12-22 5 views
5

Ich habe folgend:Grails 2.2.0 urlMappings: Jede Art und Weise gleiche URL mit verschiedenen Verben zu verwenden

"/api/users"(controller: "user") { 
    action = [GET:"list"] 
} 

Doing einen Aufruf an http://localhost:8080/platform/users ich eine Liste der Benutzer zurück. Dann fügte ich das hinzu:

"/api/users"(controller: "user") { 
    action = [POST:"save"] 
} 

Und jetzt bekomme ich eine 404 und es trifft keine Methode in UserController. Ich möchte in der Lage sein, dieselbe URL mit dem Verb zu verwenden, das die Aktion steuert. Mache ich das falsch oder unterstützen die Grails das nicht?

Antwort

11

Aus der Grails docs: URL Mappings

static mappings = { 
    "/product/$id"(controller:"product") { 
     action = [GET:"show", PUT:"update", DELETE:"delete", POST:"save"] 
    } 
} 

Für Ihren Fall:

"/api/users"(controller: "user") { 
    action = [GET:"list",POST:"save"] 
} 
+0

Ich fühle mich Wie ein Idiot. Ich wusste, dass. Must..get..schlaf. Danke James. – Gregg

+0

Was ist, wenn die Methoden in separaten Controllern sind? Oder beispielsweise/users geht zu einer Aktion und/users/1111 zu einer anderen? – Jackie

+0

@Jackie als wahrscheinlich haben Sie schlecht geplante App-Struktur. Denken Sie auch an Redirects, wenn es raffinierter ist. –

2

überprüfen Sie Ihre Usercontroller, um zu sehen, ob es allowedMethods dementsprechend wie folgt definiert ist:

class UserController { 

    static allowedMethods = [save: "POST", list: "GET"] 

    def list() { 
    ..... 
    } 

    def save() { 
    ..... 
    } 
} 
Verwandte Themen