Grails send request als JSON und parsing im controller
Möchte ich eine Anfrage zu senden als JSON und in meinem controller möchte ich Parsen von JSON und erhalten die Parameter, die ich möchte. ist dies beispielsweise für die Anforderung:
{"param1":"val1"}
Möchte ich analysieren diese Anforderung und erhalten "param1" Wert. Ich benutzt Anfrage.JSON bekam ich dann doch noch null. Gibt es irgendeine andere Möglichkeit, dies zu lösen?
Dank,
Sie müssen den contentType Ihrer Anfrage
Ich verwende Rest-Client-firefox-Erweiterung. Wie muss ich es einstellen?
Fügen Sie eine Zeile in der Anfrage-Header:
Ich bin noch immer null für die Anfrage.JSON
Ist Ihre
application/json
so dass Ihr controller wird automatisch analysiert/unmarshals die geposteten JSON. Wie versenden Sie Ihre Anfrage?Ich verwende Rest-Client-firefox-Erweiterung. Wie muss ich es einstellen?
Fügen Sie eine Zeile in der Anfrage-Header:
Content-Type
mit Wert application/json
. Ich kann sehen, dass Rest-Client hat eine Tabelle mit dem Namen Request-Header - legen Sie es dort.Ich bin noch immer null für die Anfrage.JSON
Ist Ihre
params
Sammlung aufgefüllt?InformationsquelleAutor Feras Odeh | 2012-11-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Legen Sie es in Ihrem UrlMappings wie diese:
Suche nach parseRequest in neueste Grails-guide.
Dann überprüfen, ob es korrekt funktioniert mit curl:
bitte überprüfen Sie meine bearbeitete Antwort.
Wie könnte ich das senden von json als parameter mit jedem rest-client
Rest-clients können unterscheiden sich in der Umsetzung. Versuchen curl Zeile, die ich gezeigt habe, es ist 100% richtig.
Was macht der controller Aussehen?
InformationsquelleAutor Tomasz Kalkosiński
Können Sie verwenden Sie eine der folgenden, testen Sie Ihre Sachen (beide Optionen könnte wieder verwendet werden, wie automatisierte tests schließlich - Einheit und integration):
schreiben Sie einen unit test für dich-controller wie (keine Notwendigkeit, den server zu starten):
und können sagen, dass Ihre controller.consume() funktioniert so etwas wie:
Oder Sie verwenden können, zum Beispiel die Jersey-Client zu tun, einen Aufruf gegen Ihre controller implementiert, dieses mal:
wo foo a Foo wie diese:
Hier sind einige weitere Beispiele auf, wie Sie mit der Jersey-client für verschiedene REST-Anforderungen:
https://github.com/tavibolog/TodaySoftMag/blob/master/src/test/java/com/todaysoftmag/examples/rest/BookServiceTest.java
InformationsquelleAutor tavi
In der controller-Methode, prüfen
request.format
. Es sollte angebenjson
. Ich vermute, es wird nicht hier, aber es kann Ihnen Hinweise geben, wie Sie Ihre Nutzlast wird interpretiert.In deiner Config.groovy-Datei, würde ich folgende Werte eingestellt:
In der gleichen Datei, überprüfen Sie Ihre
grails.mime.types
. stellen Sie sicher, es enthältjson: ['application/json', 'text/json']
, was es wahrscheinlich auch wird, aber oben*/*
. Diese Einträge werden ausgewertet, um (das war schon in den pre-Versionen 2.1, havent' überprüft es jetzt ist, aber was solls). In Verbindung mit diesem, als aiolos erwähnt, setzen Ihrecontent-type
- header an eine der oben genannten mime-Typen.Schließlich test mit curl pro Tomasz Kalkosiński, oder, um mit RESTClient für FF, klicken Sie auf "Header" in der ganz oben auf der client-Seite (es gibt 4 klickbare Elemente an der oberen linken Ecke; Kopf ist. Von einem frischen RESTClient, müssen Sie möglicherweise wählen Sie "Benutzerdefinierte Kopfzeile". Ich kann mich nicht erinnern)
InformationsquelleAutor Brian Henry