Вы конвертируете запрос в строку в методе контроллера, поэтому вы получаете все тело запроса и задаете для поля категории всю строку json.
То, что вы хотите сделать, это то, что Spring Boot уже дает вам преобразованное dto:
@RequestMapping(value = "/categories", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public void addCategory(@RequestBody Category category){
categoryService.save(category);
}
Если вы не хотите связывать вашу сущность с запросом, вам нужно ввести дополнительную класс, например CreateCategoryDto
:
@Data
public class CreateCategoryDTO{
@JsonProperty(value = "category")
private String category;
}
(я предполагаю, что вы используете Ломбока и Джексона. Аннотация @JsonProperty(value = "category")
добавлена только для иллюстрации того, как отделить Java имена полей от Json имена.)
Контроллер становится
@RequestMapping(value = "/categories", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
public void addCategory(@RequestBody CreateCategoryDto categoryDto){
Category newCategory = new Category(categoryDto.getCategory());
categoryService.save(newCategory);
}