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

标签 java spring spring-mvc

我是 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/

相关文章:

java - Spring jdbcTemplate单​​元测试

java - 什么是 Java/SpringBoot 中的井号 (#)?

java - Oracle与Spring Roo

java - 有没有比较STIG版本的方法或工具?

java - 使用java更新文本文件

java - 如何调用字符串数组中的 Java 方法? (java.lang.NoSuchMethodException)

java - Jaxb2Marshaller 模式验证似乎不起作用

java - 在 spring testng 测试方法上禁用事务

spring - 如何向 Spring MVC 添加自定义注释?

spring - @RequestMapping 正则表达式