我是 Java/Spring 的新手,正在尝试在现有项目中设置 API 端点。我基本上已经复制了一些当前正在工作的其他端点,但我的端点在被击中时没有验证,这似乎是因为 @RequestBody 没有填充被送入方法的对象。
我已经尝试删除 @NotNull
但它仍然失败。这看起来很奇怪,因为其他端点正在使用 @NotNull
。
示例请求.java
import NotNull;
public class SampleRequest {
@NotNull
private String testString;
public void setTestString(String testString):
this.testString = testString;
public String getTestString():
return testString;
}
示例请求资源.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;
}
示例 Controller .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;
})
}
测试.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"
}
}
关于java - @RequestBody 没有将请求解析为对象进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56870915/