#spring-boot #jhipster #spring-restcontroller
#весенняя загрузка #jhipster #spring-restcontroller
Вопрос:
RestController:
@ResponseBody
@RequestMapping(method = POST, value = "/path", consumes = APPLICATION_JSON_VALUE)
public TestModel post(@RequestBody TestModel model) {
return model;
}
Модель выглядит так:
public class TestModel implements Serializable {
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
private String id;
}
Опубликуйте этот JSon
{
"id" : 4711
}
postman выглядит так
получить ответ:
{
"type": "https://www.jhipster.tech/problem/problem-with-message",
"title": "Bad Request",
"status": 400,
"detail": "Required request body is missing: public ....,
"path": "/path",
"message": "error.http.400"
}
Похоже, что что-то блокирует @RequestBody
, потому @RequestParam
что и @PathParam
работает хорошо… Кто-нибудь знает, в чем причина этой проблемы?
Комментарии:
1. Вы пытались заключить 4711 в кавычки, поскольку это строка в вашей модели Java, а не целое число / число. Нравится
{"id":"4711"}
2. да, я попробовал, это не приводит к изменению результата (Ichange после моего тестирования типа с int на String)..
3. для меня похоже, что что-то блокирует данные RequestBody … есть ли где-нибудь встроенная опция безопасности для блокировки @RequestBody?
4. он также не работает при попытке получить String вместо TestModel следующим образом: post(строковая модель @RequestBody)
5. Вы повысили уровень журнала на сервере для регистратора «org.springframework.web. *»? Вы пробовали тот же запрос, используя более простой клиент REST, такой как JHipster swagger-ui или curl?
Ответ №1:
Возможно, это проблема типа. В вашем postman вы устанавливаете числовое значение, тогда как в коде вы ожидаете строку. Попробуйте, например, ввести строковое значение в postman или изменить тип идентификатора на «int» в вашем коде.