Wenn ich getrennt vom Frontend arbeite, erhalte ich manchmal Anfragen, die sich von meinen Erwartungen unterscheiden.
Backend "Nicht verwendete Eigenschaften mit Nullwerten senden!" Frontend "Ich habe versucht, nicht verwendete Eigenschaften ohne Schlüssel zu senden!"
... Was wäre in einer Variablen, wenn es keine Eigenschaften gäbe?
** Mit Spring Boot 2.0.5 überprüft **
Da es eine große Sache ist, habe ich es mit verschiedenen Typen überprüft.
** Formularklasse **
public class TestRequest {
//Grunddatentyp
byte reqByte;
short reqShort;
int reqInt;
long reqLong;
float reqFloat;
double reqDouble;
char reqChar;
boolean reqBoolean;
//Referenztyp
Byte reqByteWrapper;
Short reqShortWrapper;
Integer reqIntWrapper;
Long reqLongWrapper;
Float reqFloatWrapper;
Double reqDoubleWrapper;
Character reqCharWrapper;
Boolean reqBooleanWrapper;
String reqString;
Object reqObject;
}
Regler
@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());
}
}
Versuchen Sie, einen JSON ohne Eigenschaften per POST auf diesen Controller zu werfen. Ergebnis
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
Es enthält denselben Wert wie der Anfangswert, als die Variable deklariert wurde. Da der Referenztyp null enthält, ist dies derselbe wie wenn der Eigenschaftswert des Anforderungs-JSON null ist.
Ich habe das gleiche mit GET versucht.
Regler
@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());
}
}
Versuchen Sie, diesen Controller mit GET ohne Anforderungsparameter anzufordern. Ergebnis
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
Es ist das gleiche wie im Fall von POST.
Wenn die Anforderung keine Formularobjekteigenschaft hat, wird der gleiche Anfangswert wie beim Deklarieren der Variablen eingegeben.
Recommended Posts