[JAVA] [Spring Boot] Que faire si une exception HttpMediaTypeNotAcceptableException se produit sur un point de terminaison pour lequel produit est défini

Cause

La cause était que j'ai essayé de renvoyer JSON même si produit =" text / csv " était défini.

Statut

La situation est la suivante.

Ce que je voulais réaliser

--Retour csv (set produit =" text / csv ") Définir le point final --Au moment de l'erreur d'agrégation, l'état est 400 et le contenu de l'erreur est compressé dans JSON et renvoyé.

En fait, les annotations suivantes ont été ajoutées.

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

Qu'est-il arrivé

--L'état devient 406 en cas d'erreur

Contre-mesures

Ce n'était pas grave si la spécification de «produit» était supprimée.

@PostMapping(value = "[point final]")

Si vous ne spécifiez pas «produit», il sera traité comme bon, donc s'il n'y a pas de problème, vous n'avez pas à le spécifier Il semble.

Supplément

Si vous avez besoin de le spécifier dynamiquement et explicitement, vous pouvez écrire la réponse directement en utilisant HttpServletResponse. Dans ce cas, vous pouvez écrire comme suit.

@PostMapping(value = "/api/csv")
public void csv(HttpServletResponse response) {
    String csv = //Processus d'acquisition CSV;

    response.setHeader(
            "Content-Disposition",
            "attachment;filename=\"" + /*nom de fichier*/ + "\""
    );
    response.setCharacterEncoding("Shift-JIS");
    response.setContentType("text/csv");

    try (Writer writer = response.getWriter()) {
        writer.write(csv);
    } catch (IOException e) {
        //La gestion des erreurs
    }
}

Impressions

La gestion des erreurs a été normalisée en utilisant ʻExceptionHandler, mais il a fallu beaucoup de temps pour identifier la cause sans penser que l'ensemble produitdans le contrôleur pénétrerait jusque-là. Il a été écrit commeHttpMediaTypeNotAcceptableException` ...

Articles que j'ai utilisés comme référence

Recommended Posts

[Spring Boot] Que faire si une exception HttpMediaTypeNotAcceptableException se produit sur un point de terminaison pour lequel produit est défini
il ne reste plus d'espace sur l'appareil Que faire en cas d'erreur
Que faire si une erreur ActionController :: UnknownFormat se produit
Que faire si FacesMessage est défini mais pas affiché
Que faire si une erreur se produit lorsque nokogiri entre lors de l'installation du bundle
Remarques sur ce qu'il faut faire lorsque EC2 est configuré avec t2.micro
Que faire si vous avez installé Java pour OS X sur macOS
wildflly10 java8 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (récupération périodique) IJ000906 Que faire en cas d'erreur
Comment définir l'injection de dépendance Spring Boot (DI)
Que faire si TextToSpeech ne fonctionne pas sur Android 11
Que faire si une erreur d'analyseur SAX se produit lors de l'utilisation de Liferay 7 / DXP sur AWS
Étapes requises pour émettre des événements asynchrones Spring Boot
Que faire si le journal utilisant JUL n'est plus sorti dans le journal de l'application après le déploiement de l'application Spring Boot sur Tomcat en tant que guerre
Que faire si une erreur d'authentification de clé SSH se produit lors du déploiement automatique sur EC2 avec Capistrano
[Ubuntu 20.04] Que faire si le moniteur externe n'est pas reconnu
[Rails] Que faire si les données ne sont pas enregistrées dans la base de données
Que faire lorsque Cloud 9 est plein dans le didacticiel Rails
Remarques sur la marche à suivre si le Jar de dépendance Eclipse Maven est incorrect
Comment configurer Spring Boot + PostgreSQL
Qu'est-ce que @Autowired dans Spring Boot?
Que faire si vous mourez avec zip si vous avez pom lors de la création d'un fichier exécutable avec gradle
Que faire lorsqu'une exception javax.batch.operations.JobStartException se produit
Spring.messages.fallback-to-system-locale: false est requis pour le message par défaut.properties pour la prise en charge i18n de Spring Boot
Ajouter gem'rails-i18n ',' ~> 6.0.0 'et que faire si l'installation du bundle donne une erreur
Que faire lorsque le préfixe c n'est pas lié dans JSP
Que faire si le déploiement échoue dans Heroku (application Ruby non détectée)
Que faire si le processus Tomcat reste lorsque vous arrêtez Tomcat dans Eclipse
Que faire si vous recevez une alerte de vulnérabilité MiniMagick sur GitHub
Remarques sur la marche à suivre lorsqu'une exception WebView ClassNotFoundException se produit dans JavaFX 12
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
Qu'est-ce qu'un fichier .original Spring Boot?
Que faire lorsqu'une exception javax.el.PropertyNotWritableException se produit
[Résolution d'erreur] Se produit lors de la tentative de création d'un environnement pour le printemps avec docker
Que faire si l'installation de ffi échoue lors du lancement d'une application dans Rails