Lorsque je travaille séparément du front-end, je reçois parfois des demandes différentes de ce à quoi je m'attendais.
Backend "Envoyez les propriétés inutilisées avec des valeurs nulles!" Frontend "J'ai essayé d'envoyer des propriétés inutilisées sans clé!"
... Que contiendrait une variable s'il n'y avait pas de propriétés?
** Confirmé avec Spring Boot 2.0.5 **
Comme c'est un gros problème, je l'ai vérifié avec différents types.
** Classe de formulaire **
public class TestRequest {
//Type de données de base
byte reqByte;
short reqShort;
int reqInt;
long reqLong;
float reqFloat;
double reqDouble;
char reqChar;
boolean reqBoolean;
//Type de référence
Byte reqByteWrapper;
Short reqShortWrapper;
Integer reqIntWrapper;
Long reqLongWrapper;
Float reqFloatWrapper;
Double reqDoubleWrapper;
Character reqCharWrapper;
Boolean reqBooleanWrapper;
String reqString;
Object reqObject;
}
manette
@RestController
@RequestMapping("/api/test")
public class TestController {
@PostMapping("/post")
public void postTest(@RequestBody TestRequest request) {
System.out.println("byte: " + request.getReqByte());
System.out.println("short: " + request.getReqShort());
System.out.println("int: " + request.getReqInt());
System.out.println("long: " + request.getReqLong());
System.out.println("float: " + request.getReqFloat());
System.out.println("double: " + request.getReqDouble());
System.out.println("char: " + request.getReqChar());
System.out.println("boolean: " + request.isReqBoolean());
System.out.println("Byte: " + request.getReqByteWrapper());
System.out.println("Short: " + request.getReqShortWrapper());
System.out.println("Integer: " + request.getReqIntWrapper());
System.out.println("Long: " + request.getReqLongWrapper());
System.out.println("Float: " + request.getReqFloatWrapper());
System.out.println("Double: " + request.getReqDoubleWrapper());
System.out.println("Character: " + request.getReqCharWrapper());
System.out.println("Boolean: " + request.getReqBooleanWrapper());
System.out.println("String: " + request.getReqString());
System.out.println("Object: " + request.getReqObject());
}
}
Essayez de lancer un JSON sans propriétés à ce contrôleur par POST. résultat
byte: 0
short: 0
int: 0
long: 0
float: 0.0
double: 0.0
char:
boolean: false
Byte: null
Short: null
Integer: null
Long: null
Float: null
Double: null
Character: null
Boolean: null
String: null
Object: null
Il contient la même valeur que la valeur initiale lorsque la variable a été déclarée. Étant donné que le type de référence contient null, c'est la même chose que lorsque la valeur de propriété de la demande JSON est nulle.
J'ai essayé la même chose avec GET.
manette
@RestController
@RequestMapping("/api/test")
public class TestController {
@GetMapping("/get")
public void getTest(TestRequest request) {
System.out.println("byte: " + request.getReqByte());
System.out.println("short: " + request.getReqShort());
System.out.println("int: " + request.getReqInt());
System.out.println("long: " + request.getReqLong());
System.out.println("float: " + request.getReqFloat());
System.out.println("double: " + request.getReqDouble());
System.out.println("char: " + request.getReqChar());
System.out.println("boolean: " + request.isReqBoolean());
System.out.println("Byte: " + request.getReqByteWrapper());
System.out.println("Short: " + request.getReqShortWrapper());
System.out.println("Integer: " + request.getReqIntWrapper());
System.out.println("Long: " + request.getReqLongWrapper());
System.out.println("Float: " + request.getReqFloatWrapper());
System.out.println("Double: " + request.getReqDoubleWrapper());
System.out.println("Character: " + request.getReqCharWrapper());
System.out.println("Boolean: " + request.getReqBooleanWrapper());
System.out.println("String: " + request.getReqString());
System.out.println("Object: " + request.getReqObject());
}
}
Essayez de demander ce contrôleur avec GET sans paramètres de demande. résultat
byte: 0
short: 0
int: 0
long: 0
float: 0.0
double: 0.0
char:
boolean: false
Byte: null
Short: null
Integer: null
Long: null
Float: null
Double: null
Character: null
Boolean: null
String: null
Object: null
C'est la même chose que dans le cas de POST.
Si la demande n'a pas de propriété d'objet de formulaire, la même valeur initiale que lors de la déclaration de la variable est entrée.
Recommended Posts