@RequestBody не анализирует запрос в объект для проверки - PullRequest
1 голос
/ 03 июля 2019

Я довольно новичок в 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 (как я уже сказал, я непосредственно скопировал / изменил другие рабочие конечные точки, чтобы создать мой.)

1 Ответ

4 голосов
/ 03 июля 2019

в соответствии с вашим объектом запроса, запрос json должен выглядеть следующим образом

{
  "sample":{
             "testString":"foo"
           }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...