Я не могу сделать запрос PUT в спокойной весенне-загрузочной аппликации - PullRequest
0 голосов
/ 17 апреля 2019

Экран запроса PUT почтальона Я создаю спокойное весеннее приложение, но не могу заставить работать запрос PUT. Каждый раз, когда я пытаюсь сделать запрос PUT, я получаю сообщение об ошибке в «Почтальоне»: «Обязательное тело запроса отсутствует», однако, тело запроса кажется правильным.

@RestController
class SimulatorsController {
    private final RacetrackRepository racetrackRepository;

    SimulatorsController(RacetrackRepository racetrackRepository) {
        this.racetrackRepository = racetrackRepository;
    }

    @GetMapping("/simulators")
    public Iterable<Racetrack> all(){

        return racetrackRepository.findAll();
    }

    @GetMapping("/simulators/{id}")
    public Racetrack one(@PathVariable Integer id) throws Exception {

        return racetrackRepository.findById(id)
                .orElseThrow(() -> new Exception());
    }

    @PostMapping("/add")
    public Racetrack addNewRacetrack(@RequestParam(defaultValue = "track") String name,
                           @RequestParam(defaultValue = "1000") double price,
                           @RequestParam(defaultValue = "1000") int exerciseDuration,
                           @RequestParam(defaultValue = "purple") String colour,
                           @RequestParam(defaultValue = "cross") String exercise) {
        Racetrack racetrack = new Racetrack(name, price, exerciseDuration, colour, exercise);
        return racetrackRepository.save(racetrack);
    }

Методы GET, POST и DELETE работают

    @PutMapping("/simulators/{id}")
    public Racetrack updateRacetrack(@RequestBody Racetrack newRacetrack,
                               @PathVariable Integer id){

        return  racetrackRepository.findById(id)
                .map(racetrack -> {
            racetrack.setName(newRacetrack.getName());
            racetrack.setPrice(newRacetrack.getPrice());
            racetrack.setExerciseDuration(newRacetrack.getExerciseDuration());
            racetrack.setColour(newRacetrack.getColour());
            racetrack.setExercise(newRacetrack.getExercise());
            racetrack.setId(id);
            return racetrackRepository.save(racetrack);
                })
                .orElseGet(() -> {
                    newRacetrack.setId(id);
                    return racetrackRepository.save(newRacetrack);
                });
    }

    @DeleteMapping("/simulators/delete/{id}")
    public String deleteRacetrack(@PathVariable Integer id){

        racetrackRepository.deleteById(id);
        return "deleted";
    }
}

postman screen

1 Ответ

1 голос
/ 18 апреля 2019

Перепроверьте ваш запрос POSTMAN.Проверьте тип содержимого как application / json.изображение является просто примером .....

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...