Dateien wie Bilder und JSON-konvertierte Daten werden gleichzeitig mit "axios" POST-fähig gemacht, und die Zuordnung und Validierung zu Objekten erfolgt auf der Spring-Seite. Auf die gleiche Weise sollten Sie in der Lage sein, alle Daten zu senden, die gleichzeitig auf der Spring-Seite analysiert werden können.
Die Endpunkte sind: Der Trick besteht darin, "@ RequestPart" zu verwenden. Es werden ganzzahlige Werte, Dateien und JSON-Objekte verwendet und für jedes ausgegeben.
Endpunkt
@PostMapping("/api/sample")
public void sample(
@RequestParam("intValue") Integer intValue,
@RequestPart("file") MultipartFile multipartFile,
@RequestPart("jsonValue") @Valid SampleObject sampleObject,
BindingResult bindingResult
) {
if(bindingResult.hasErrors()) {
//Fehlerbehandlung
System.out.println(bindingResult.getAllErrors());
}
System.out.println(intValue);
System.out.println(multipartFile.getOriginalFilename());
System.out.println(sampleObject.getName());
}
Die zu empfangenden Objekte sind wie folgt.
Objekt
@Getter @Setter
public class SampleObject {
@NotBlank
private String name;
@NotNull
private String description;
}
Der Code für POST lautet wie folgt [^ Einzug]. Der Schlüssel ist die Angabe von "type:" application / json "in" new Blob ". In den Kommentaren finden Sie Informationen zum Senden.
POST
postSample (file) { //Lassen Sie die Datei als Argument übergeben
const sampleObject = { //Objekt, um JSON zu sein
name: 'name',
description: null //Haken Sie die Validierung ein, indem Sie die Beschreibung auf null setzen
}
const formData = new FormData()
formData.append('file', file)
formData.append('jsonValue', new Blob([JSON.stringify(sampleObject)], {type : 'application/json'}))
formData.append('intValue', '1') //Geben Sie 1 für intValue an
axios.post('/api/sample', formData)
}
Ich habe eine Datei namens 1.png gesendet. Sie können sehen, dass es einschließlich Fehler ordnungsgemäß verarbeitet werden kann.
[Field error in object 'jsonValue' on field 'description': rejected value [null]; codes [NotNull.jsonValue.description,NotNull.description,NotNull.java.lang.String,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [jsonValue.description,description]; arguments []; default message [description]]; default message [must not be null]]
1
1.png
name
Wenn Sie nicht "type:" application / json "angeben, werden Sie wütend auf" org.springframework.web.HttpMediaTypeNotSupportedException: Inhaltstyp "application / octet-stream" nicht unterstützter Anforderungsteil ".
application / octat-stream
bedeutet, dass die Übertragungsmethode nicht angegeben ist. Wenn Sie hier JSON angeben, funktioniert sie ordnungsgemäß.
[^ indent]: Semikolonloser Stil mit 2 Leerzeichen.
Recommended Posts