J'essaie d'obtenir mes paramètres de requête dans un DTO like in this question mais mon DTO a toujours une valeur nulle.DTO n'a que null avec les paramètres de requête GET, mais pas POST @RequestBody
Y a-t-il quelque chose qui ne va pas dans mon code? Je l'ai fait aussi simple que possible.
Requêtes:
GET http://localhost:8080/api/test?a=azaz => null
POST http://localhost:8080/api/test avec {"a":"azaz"}
=> "Azaz"
Controller avec GET et POST:
@RestController
@RequestMapping(path = {"/api"}, produces = APPLICATION_JSON_VALUE)
public class MyController {
// GET: dto NOT populated from query params "?a=azaz"
@RequestMapping(method = GET, path = "test")
public @ResponseBody String test(TestDto testDto){
return testDto.toString(); // null
}
// POST: dto WELL populated from body json {"a"="azaz"}
@RequestMapping(method = POST, path = "test")
public @ResponseBody String postTest(@RequestBody TestDto testDto){
return testDto.toString(); // "azaz"
}
}
DTO:
public class TestDto {
public String a;
@Override
public String toString() {
return a;
}
}
Merci!
Full Spring boot sample to illustrate it
Avez-vous un setter getter dans votre classe TestDto? Sinon, pouvez-vous ajouter getter et setter et vérifier? –
vous ne dites pas à Spring que TestDto fait partie de la requête dans la requête get. – reos