温馨提示:本文翻译自stackoverflow.com,查看原文请点击:java - @RequestBody not parsing request into object for validation
java spring spring-mvc

java - @RequestBody未将请求解析为对象以进行验证

发布于 2020-03-27 10:24:11

我是Java / Spring的新手,正在尝试在现有项目中设置API端点。我实质上已经复制了一些其他当前正在工作的端点,但是我的端点在被命中时并没有进行验证,这似乎是因为@RequestBody没有填充要馈入该方法的对象。

我尝试删除,@NotNull但仍然失败。鉴于其他端点正在使用,这似乎很奇怪@NotNull

SampleRequest.java

import NotNull;

public class SampleRequest {

    @NotNull
    private String testString;

    public void setTestString(String testString):
        this.testString = testString;

    public String getTestString():
        return testString;
}

SampleRequestResource.java

import Valid
import NotNull

public class SampleRequestResource {

    @NotNull;
    @Valid;
    private SampleRequest sample;

    public SampleRequest getSample():
        return sample;

    public void setSampleRequest(SampleRequest sample):
        this.sample = sample;
}

SampleController.java

import RequestBody
import RequestMapping
import RestController

@RestController
@RequestMapping("/foo")
public class SampleController(){

    @RequestMapping("/{id}/bar", method = request.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<SampleResponseResource> stuff(
        @Valid @RequestBody SampleRequestResource request) {
            do stuff;
        return response;        
        })
}

test.py


import requests, json
header = {"Content-Type":"application/json"}
data = {"testString": "foo"}

test = requests.post(url, header=header, json=data, verify=false)

当我运行test.py我希望它适当地返回,但不是我得到验证错误,因为samplenullSampleRequestResource.java

我假设@RequestBody应该解析请求,当它调用时,SampleRequestResource它将把解析的请求推送到SampleRequest并验证就好了,因为这在其余的API中似乎正在发生(就像我说的那样,我直接复制/更改了创建我的其他工作端点。)

查看更多

查看更多

提问者
chaserchap
被浏览
227
7,105 2019-07-04 00:01

根据您的请求对象,json请求应如下所示

{
  "sample":{
             "testString":"foo"
           }
}