Ich habe eine Spring Rest Endpunkt eine einfache Hallo App. Es sollte einen {"name": "etwas"} akzeptieren und "Hallo, etwas" zurückgeben.Spring Rest JSON Post null Werte
Mein Controller ist:
@RestController
public class GreetingController {
private static final String template = "Hello, %s!";
@RequestMapping(value="/greeting", method=RequestMethod.POST)
public String greeting(Person person) {
return String.format(template, person.getName());
}
}
Person:
public class Person {
private String name;
public Person() {
this.name = "World";
}
public Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
Wenn ich eine Anfrage an den Service machen wie
curl -X POST -d '{"name": "something"}' http://localhost:8081/testapp/greeting
I
bekommenHello, World!
Sieht so aus, als würde das JSON nicht ordnungsgemäß in das Person-Objekt deserialisiert. Es verwendet den Standardkonstruktor und setzt dann den Namen nicht. Ich habe folgendes gefunden: How to create a POST request in REST to accept a JSON input?, also habe ich versucht, ein @RequestBody auf dem Controller hinzuzufügen, aber das verursacht einen Fehler über "Inhaltstyp" application/x-www-form-urlencoded; charset = UTF-8 'wird nicht unterstützt ". Ich sehe, dass das hier behandelt wird: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported for @RequestBody MultiValueMap, was das Entfernen der @RequestBody
schlägt Ich habe versucht, den Standardkonstruktor zu entfernen, die es auch nicht mag.
Diese Frage deckt Nullwerte REST webservice using Spring MVC returning null while posting JSON aber es schlägt @RequestBody Zugabe aber, dass Konflikte mit oben ...
Wie gesagt in meiner Beschreibung, die zu einer "Inhaltstyp" -Anwendung führt/x-www-form-urlencoded; Zeichensatz = UTF-8 'nicht unterstützt " – MichaelB
Ihr Inhaltstyp sollte' Inhaltstyp'-Anwendung sein/json' – Zorglube
Sie könnten PostMan verwenden O r einige andere Json-Client, um Ihre App zu testen, könnte ich einfacher sein. – Zorglube