Das lag daran, dass ich versucht habe, JSON zurückzugeben, obwohl produziert = "text / csv"
gesetzt war.
Die Situation ist wie folgt.
--Return csv (set produziert =" text / csv "
) Endpunkt festlegen
Tatsächlich wurden die folgenden Anmerkungen hinzugefügt.
@PostMapping(value = "[Endpunkt]", produces = "text/csv")
--Status wird bei Fehler zu 406
Es war in Ordnung, wenn die Spezifikation "Produziert" entfernt wurde.
@PostMapping(value = "[Endpunkt]")
Wenn Sie "Produziert" nicht angeben, wird es als gut behandelt. Wenn also kein Problem vorliegt, müssen Sie es nicht angeben Es scheint.
Wenn Sie es dynamisch und explizit angeben müssen, können Sie die Antwort direkt mit HttpServletResponse
schreiben.
In diesem Fall können Sie wie folgt schreiben.
@PostMapping(value = "/api/csv")
public void csv(HttpServletResponse response) {
String csv = //CSV-Akquisitionsprozess;
response.setHeader(
"Content-Disposition",
"attachment;filename=\"" + /*Dateiname*/ + "\""
);
response.setCharacterEncoding("Shift-JIS");
response.setContentType("text/csv");
try (Writer writer = response.getWriter()) {
writer.write(csv);
} catch (IOException e) {
//Fehlerbehandlung
}
}
Die Fehlerbehandlung wurde mit "ExceptionHandler" standardisiert, aber es dauerte lange, die Ursache zu identifizieren, ohne zu glauben, dass das im Controller festgelegte "Produce" so weit vordringen würde. Es wurde als "HttpMediaTypeNotAcceptableException" geschrieben ...
Recommended Posts