Экран запроса 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";
}
}