J'utilise @RestController
s avec une application où toutes les demandes sont POST
demandes ... Comme j'ai appris de ce post , vous ne pouvez pas mapper des paramètres de publication individuels à des arguments de méthode individuels, vous devez plutôt encapsuler tous les paramètres dans un objet, puis utiliser cet objet comme paramètre de méthode annoté avec @RequestBody
Donc
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
return customerService.requestOTP(idNumber, applicationId);
ne fonctionnera pas avec une requête POST
du corps {"idNumber":"345","applicationId":"64536"}
MON problème est que j'ai BEAUCOUP de POST
demandes, chacune avec seulement un ou deux paramètres, il sera fastidieux de créer toutes ces objets juste pour recevoir les requêtes à l'intérieur ... alors y a-t-il une autre manière similaire à la façon dont les paramètres de requête get (paramètres URL) sont traités?
Oui, il y a deux façons -
tout d'abord - la façon dont vous faites juste ce que vous devez faire est d'ajouter ces paramètres avec une URL, pas besoin de les donner dans le corps. l'url sera comme - baseurl +/requestotp? idNumber = 123 & applicationId = 123
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestParam(value="idNumber") String idNumber , @RequestParam(value="applicationId") String applicationId) {
return customerService.requestOTP(idNumber, applicationId);
deuxième- vous pouvez utiliser la carte comme suit
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody Map<String,Object> body) {
return customerService.requestOTP(body.get("idNumber").toString(), body.get("applicationId").toString());
J'ai changé votre code, veuillez le vérifier
Classe DTO
public class DTO1 {
private String idNumber;
private String applicationId;
public String getIdNumber() {
return idNumber;
}
public void setIdNumber(String idNumber) {
this.idNumber = idNumber;
}
public String getApplicationId() {
return applicationId;
}
public void setApplicationId(String applicationId) {
this.applicationId = applicationId;
}
}
Méthode du contrôleur de repos
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody DTO1 dto){
System.out.println(dto.getApplicationId()+" (------) "+dto.getIdNumber());
return "";
}
Type de demande - application/json {"idNumber": "345", "applicationId": "64536"}
OR
@RequestMapping(value="/requestotp",method = RequestMethod.POST)
public String requestOTP( @RequestBody String dto){
System.out.println(dto);
return "";
}