gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:22:04 30 4
gpt4 key购买 nike

我是 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 时,我希望它能正确返回,但是我却收到验证错误,因为 samplenull 来自 SampleRequestResource.java

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

最佳答案

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

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

关于java - @RequestBody 没有将请求解析为对象进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56870915/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com