我无法通过平稳的spring-boot应用程序发出PUT请求

时间:2019-04-17 15:58:20

标签: java rest spring-boot postman

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";
    }
}

postman screen

1 个答案:

答案 0 :(得分:1)

交叉检查您的POSTMAN请求。检查内容类型为application / json。该图像只是一个例子.....

enter image description here