我是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
我希望它适当地返回,但不是我得到验证错误,因为sample
是null
从SampleRequestResource.java
我假设@RequestBody
应该解析请求,当它调用时,SampleRequestResource
它将把解析的请求推送到SampleRequest
并验证就好了,因为这在其余的API中似乎正在发生(就像我说的那样,我直接复制/更改了创建我的其他工作端点。)
根据您的请求对象,json请求应如下所示
{
"sample":{
"testString":"foo"
}
}