Весенняя аннотация отсутствует запрос тела - PullRequest
0 голосов
/ 29 марта 2020

Я написал очень простой класс контроллера с простым методом post и get.

Сегодня я впервые использую Почтальон - я не знаю, что делаю неправильно, но каждый раз, используя отображение POST , я получаю:

{
  "timestamp": "2020-03-29T19:05:49.548+0000",
  "status": 400,
  "error": "Bad Request",
  "message": "Required request body is missing: public int pl.futurecollars.controller.GreetingControler.saveGreeting(pl.futurecollars.controller.Greeting)",
  "path": "/greetings"
}

Класс контроллера:

@RestController
@RequestMapping("/greetings")
public class GreetingControler {

    private Map<Integer, Greeting> greetings = new HashMap<>();
    private int counter = 0;

    @GetMapping
    public Collection<Greeting> getGreetings() {
        return greetings.values();
    }

    @PostMapping
    public int saveGreeting(@RequestBody Greeting greeting){
        greeting.setId(counter);
        greetings.put(counter, greeting);
        return counter++;
    }

    @DeleteMapping("/{id}")
    public void deleteGreeting(@PathParam("id") int greetingId){
        greetings.remove(greetingId);
    }
}

Я добавил @RequestBody, но он все еще говорит, что его нет.

Как решить эту проблему?

Ответы [ 2 ]

1 голос
/ 30 марта 2020

В сообщении об ошибке есть четкое описание того, чего не хватает:

Отсутствует обязательное тело запроса: ...

Поэтому вы пропустили добавление тела в запрос.

Ваша конфигурация должна выглядеть следующим образом:

enter image description here

Тело должно быть точно JSON объектом вашего Greeting класса.
Он должен быть размещен на вкладке raw.

Кроме того, не забудьте о соответствующем Типе контента в header:

enter image description here

Полезные ссылки:

0 голосов
/ 29 марта 2020

Сначала проверьте ваш ввод в соответствии с ошибкой, которую вы упомянули в комментарии, одно из ваших имен полей начинается с ., вместо этого оно должно быть в "". Вы можете подтвердить свой json на https://jsoneditoronline.org/. Также добавив снимок почтальона просто FYI Внутри почтальона -> Тело, куда вы можете поместить полезную нагрузку

...