简体   繁体   English

Spring RestController POST 400 Bad Request

[英]Spring RestController POST 400 Bad Request

I have a Spring RestController that any attempt to post to it returns 400 Bad Request despite seeing the correct data being sent in Chrome Developer Tools. 我有一个Spring RestController,尽管在Chrome开发者工具中发现了正确的数据,但任何尝试发布到它都会返回400 Bad Request。 The @Valid annotation is kicking it out because the ParameterDTO object is not being populated at all. @Valid注释正在将其踢出,因为根本没有填充ParameterDTO对象。

My Controller 我的控制器

@RestController
@RequestMapping(path = "/api/parameters", consumes = {MediaType.APPLICATION_JSON_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
public class ParameterResource {

    private final ParameterService parameterService;

    @Autowired
    public ParameterResource(ParameterService parameterService) {
        this.parameterService = parameterService;
    }

    @GetMapping
    public ResponseEntity<?> getParameters(@RequestParam(value = "subGroupId", required = false) Integer subGroupId) {
        if (subGroupId != null) {
            return ResponseEntity.ok(parameterService.getParameters(subGroupId));
        }
        return ResponseEntity.ok(parameterService.getParameters());
    }

    @PostMapping
    public ResponseEntity<?> createParameter(@Valid ParameterDTO parameterData) {
        int id = parameterService.saveParameter(parameterData);
        URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
                .buildAndExpand(id).toUri();
        return ResponseEntity.created(uri).build();
    }

    @GetMapping(path = "/levels")
    public ResponseEntity<?> getParameterLevels() {
        return ResponseEntity.ok(ParameterLevels.getParameterLevelMap());
    }

    @GetMapping(path = "/levels/{id}/values")
    public ResponseEntity<?> getLevelValues(@PathVariable("id") int levelId) {
        return ResponseEntity.ok(parameterService.getParameterLevelValues(levelId));
    }

    @GetMapping(path = "/types")
    public ResponseEntity<?> getParameterTypes() {
        return ResponseEntity.ok(parameterService.getParameterTypes());
    }
}

I was using axios from JavaScript and though my problem might be there but I have the same issue using Postman. 我使用的是来自JavaScript的axios,虽然我的问题可能在那里但我使用Postman也有同样的问题。 I am setting the Content-Type and Accept header. 我正在设置Content-Type和Accept标头。 It seems like Spring is not deserializing the data at all. 看起来Spring根本没有对数据进行反序列化。

在此输入图像描述

在此输入图像描述

You need to add @RequestBody annotation before ParameterDTO parameterData declaration, like below: 您需要在ParameterDTO parameterData声明之前添加@RequestBody注释,如下所示:

    @PostMapping
    public ResponseEntity<?> createParameter(@RequestBody @Valid ParameterDTO parameterData) {
        int id = parameterService.saveParameter(parameterData);
        URI uri = ServletUriComponentsBuilder.fromCurrentRequest().path("/{id}")
                .buildAndExpand(id).toUri();
        return ResponseEntity.created(uri).build();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 400错误请求尝试POST到Spring端点 - 400 Bad request trying to POST to a Spring endpoint 获得400次Spring RestTemplate POST错误请求 - Getting 400 Bad Request for Spring RestTemplate POST 弹簧和ExtJS“400错误请求”与PUT但不与POST - Spring and ExtJS “400 Bad Request” with PUT but not with POST Spring MVC @RestController - &gt;无论我做什么,PUTting都会导致“400 Bad Request” - Spring MVC @RestController -> PUTting results in “400 Bad Request” no matter what I do 使用spring RestController对错误请求的自定义响应 - Custom response on bad request using spring RestController 带有参数的Spring RestTemplate HTTP Post导致400错误的请求错误 - Spring RestTemplate HTTP Post with parameters cause 400 bad request error Spring MVC- REST POST - 错误请求400 - Spring MVC- REST POST - Bad Request 400 使用 Spring RestTemplate 进行 POST 时收到 400 BAD 请求 - Getting 400 BAD Request when using Spring RestTemplate to POST Spring RestTemplate post 在 HashMap 中使用参数会抛出 400 Bad Request - Spring RestTemplate post using parameters in a HashMap throws 400 Bad Request 在Spring Controller上的$ .ajax POST之后接收到错误的请求错误(400) - Receiving a Bad Request Error (400) after $.ajax POST on Spring Controller
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM