[JAVA] [Spring Boot] Was tun, wenn eine HttpMediaTypeNotAcceptableException auf einem Endpunkt auftritt, für den produziert wird?

Ursache

Das lag daran, dass ich versucht habe, JSON zurückzugeben, obwohl produziert = "text / csv" gesetzt war.

Status

Die Situation ist wie folgt.

Was ich erreichen wollte

--Return csv (set produziert =" text / csv ") Endpunkt festlegen

Tatsächlich wurden die folgenden Anmerkungen hinzugefügt.

@PostMapping(value = "[Endpunkt]", produces = "text/csv")

Was ist passiert

--Status wird bei Fehler zu 406

Gegenmaßnahmen

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.

Ergänzung

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
    }
}

Impressionen

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 ...

Artikel, die ich als Referenz verwendet habe

Recommended Posts

[Spring Boot] Was tun, wenn eine HttpMediaTypeNotAcceptableException auf einem Endpunkt auftritt, für den produziert wird?
Kein Platz mehr auf dem Gerät Was tun, wenn ein Fehler auftritt?
Was tun, wenn ein ActionController :: UnknownFormat-Fehler auftritt?
Was tun, wenn FacesMessage festgelegt, aber nicht angezeigt wird?
Was tun, wenn ein Fehler auftritt, wenn nokogiri bei der Bundle-Installation eingeht?
Hinweise zur Vorgehensweise bei der Einrichtung von EC2 mit t2.micro
Was tun, wenn Sie Java für OS X unter macOS installiert haben?
wildflly10 java8 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (Periodische Wiederherstellung) IJ000906 Was tun, wenn ein Fehler auftritt?
So stellen Sie Spring Boot Dependency Injection (DI) ein
Was tun, wenn TextToSpeech unter Android 11 nicht funktioniert?
Was tun, wenn bei Verwendung von Liferay 7 / DXP unter AWS ein SAX-Parser-Fehler auftritt?
Erforderliche Schritte zum Ausgeben von asynchronen Spring Boot-Ereignissen
Was tun, wenn während der automatischen Bereitstellung auf EC2 mit Capistrano ein SSH-Schlüsselauthentifizierungsfehler auftritt?
Was tun, wenn beim Installieren von Axios in einem React + Typescript-Projekt ein Fehler auftritt?
[Ubuntu 20.04] Was tun, wenn der externe Monitor nicht erkannt wird?
[Rails] Was tun, wenn keine Daten in der Datenbank registriert sind?
Was tun, wenn Cloud 9 im Rails-Lernprogramm voll ist?
Hinweise, was zu tun ist, wenn das Eclipse Maven-Abhängigkeitsglas nicht korrekt ist
So stellen Sie Spring Boot + PostgreSQL ein
Was ist @Autowired im Spring Boot?
Was tun, wenn Sie mit Reißverschluss sterben, wenn Sie Pom haben, wenn Sie ein ausführbares Glas mit Gradle erstellen?
Was tun, wenn eine javax.batch.operations.JobStartException auftritt?
Spring.messages.fallback-to-system-locale: false ist erforderlich, um message.properties für die i18n-Unterstützung von Spring boot als Standard festzulegen
Fügen Sie gem'rails-i18n ',' ~> 6.0.0 'hinzu und was zu tun ist, wenn die Bundle-Installation einen Fehler anzeigt
Was tun, wenn das Präfix c in JSP nicht gebunden ist?
Was tun, wenn die Bereitstellung in Heroku fehlschlägt (Ruby-App nicht erkannt)?
Was tun, wenn der Tomcat-Prozess bestehen bleibt, wenn Sie Tomcat in Eclipse stoppen?
Was tun, wenn auf GitHub eine MiniMagick-Sicherheitsanfälligkeitswarnung angezeigt wird?
Hinweise zur Vorgehensweise beim Auftreten einer WebView ClassNotFoundException in JavaFX 12
Was tun, wenn die Meldung "Ein Server läuft bereits" angezeigt wird. Fehler beim Versuch, den Rails-Server zu starten
Was ist eine Spring Boot-Originaldatei?
Was tun, wenn eine javax.el.PropertyNotWritableException auftritt?
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen
Was tun, wenn die ffi-Installation beim Starten einer Anwendung in Rails fehlschlägt?