【问题标题】:@RequestBody not parsing request into object for validation@RequestBody 不将请求解析为对象进行验证
【发布时间】:2019-07-03 13:09:51
【问题描述】:

我对 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 是来自SampleRequestResource.javanull

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

【问题讨论】:

  • 你说的不是真的!为了通过验证,您应该使用以下 json 进行反序列化:{ "sample" : {"testString": "foo"} }.
  • 您的代码不是有效的 Java 代码。发布有效的 Java 代码。

标签: java spring spring-mvc


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    • 1970-01-01
    • 2020-03-11
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多