postman PUT request screen 我正在创建一个宁静的spring应用程序,但无法使PUT请求工作。每次尝试发出PUT请求时,Postman都会出现此错误:“缺少必需的请求正文”,但是请求正文似乎是正确的。
@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";
}
}