2016-07-26 8 views
0

Ich verwende Grails 3.1.9 mit dem rest-api Profil. Nach dem Erstellen von Modellen und Controllern (von Grails CLI) und startete die Anwendung. ich nicht erstellen kann POST von Postman/Locken etc ..Grails 3.1.9: POST nicht erkannt

Wenn ich versuche, direkt die Save-Methode aufrufen, zB:

http://localhost:8080/mymodel/create 

alles funktioniert gut. Aber wenn ich versuche, es per POST aufzurufen, wird die Methode save() niemals aufgerufen (index ist die Standardaktion).

p.s. Ich habe dies auf meinem Controller:

static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"] 

Warum passiert das?

+0

Eine Abhilfe ist möglich, das Filtern von params.getRequest() getMethod(), aber ... –

Antwort

1

Sie sollten die Methode save() per POST aufrufen, nicht create(), die normalerweise nur zum Anzeigen der Formularansicht des erstellten Elements verwendet wird. Anstatt also die Ausführung

curl -H "Content-Type: application/json" -X POST -d '{"foo":"bar"}' http://localhost:8080/mymodel/create 

Verwendung:

curl -H "Content-Type: application/json" -X POST -d '{"foo":"bar"}' http://localhost:8080/mymodel/save 

Natürlich, wenn Sie URL-Zuordnung richtig statt http://localhost:8080/mymodel/save verwendet werden, sollten Sie einfach verwenden http://localhost:8080/mymodel

+0

Vielen Dank für Ihre Hilfe, aber ich habe einen Fehler in meiner Anfrage gemacht. Ich rufe save() nicht create() auf. –

0

sicher, dass dies ein Fehler ist, ich Öffnen Sie ein Problem auf GitHub. Geschlossen wie kein Fehler.

Ich habe vergessen, auf UrlMappings.groovy die folgende Zeile hinzufügen:.

"/foos"(resources:"foo") 

https://github.com/grails/grails-core/issues/10067