У меня есть проект Spring MVC, и я настроил библиотеку jackson для автоматического преобразования ответа (java-объекта) в json и работает в GET-запросах следующим образом.Как получить объект из API REST с Spring MVC
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody Orders createOrder(Model model){
Orders orders = new Orders();
//Populate orders.....
return orders;
}
Но когда я пытаюсь обработать запрос POST и получить объект из запроса JSon, я получаю ошибку «400 Bad Request», как весна не может создать объект заказов из JSON. Я поместил тот же json-файл, что и ответ метода GET, поэтому я полагаю, что файл хорошо отформатирован.
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> createOrder(@RequestBody Orders orders){
LOG.info(orders.toString());
return new ResponseEntity<String>("", HttpStatus.CREATED);
}
Если изменить класс @RequestBody в строку (CreateOrder (@RequestBody строк заказов)), запрос POST хорошо обрабатывается.
Должен ли я создать картутор, который отображает входные данные json в класс Order?
UPDATE: Я создал самый простой пример, чтобы попробовать, и я получаю ошибку 400. Exmaple:
Домен: Home.java
public class Home {
private String address = "Calle mármoles";
public Home(){
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Контроллер:
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> createOrder2(@RequestBody Home orders){
return new ResponseEntity<String>("{}", HttpStatus.CREATED);
}
JSON (POST):
{
address: "Prueba"
}
[SOLVED]
Я пропустил, чтобы поместить «» во имя имени параметра.
Как вы называете свой почтовый метод? Является ли тело запроса состоящим только из json из GET? – Avi
Да, в теле есть только JSON. –
Вероятно, лучше всего, чтобы вы положили свое решение в качестве ответа, так что A) Этот вопрос правильно обозначен как решенный, и B) Это очевидно для других людей, у которых может быть аналогичная проблема в будущем, что было не так в вашем случае. – Edd