Maison  >  Article  >  Java  >  Comment renvoyer une erreur HTTP 400 « Bad Request » dans les méthodes Spring MVC @ResponseBody ?

Comment renvoyer une erreur HTTP 400 « Bad Request » dans les méthodes Spring MVC @ResponseBody ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-06 02:02:02133parcourir

How to Return an HTTP 400

Comment gérer les erreurs HTTP dans les méthodes Spring MVC @ResponseBody

Problème :

Quand en utilisant Spring MVC avec une approche @ResponseBody, comment une méthode peut-elle répondre avec une erreur HTTP 400 « mauvaise demande » si une condition particulière n'est pas remplie ?

Solution :

Approche originale :

Le code d'origine a tenté de renvoyer une chaîne si la condition n'était pas remplie, ce qui n'est pas réalisable puisque @ResponseBody attend un objet ResponseEntity :

<code class="java">@ResponseBody
public String match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        // TODO: how to respond with e.g. 400 "bad request"?
    }
    return json;
}</code>

Solution :

Modifiez le type de retour de la méthode en ResponseEntity, où T est le type de réponse attendu. Cela vous permet d'exploiter l'énumération HttpStatus pour spécifier le code d'état HTTP :

<code class="java">@ResponseBody
public ResponseEntity<String> match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
    }
    return new ResponseEntity<>(json, HttpStatus.OK);
}</code>

Pour une alternative plus propre après Spring 4.1, utilisez les méthodes d'assistance dans ResponseEntity :

<code class="java">@ResponseBody
public ResponseEntity<String> match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
    }
    return ResponseEntity.ok(json);
}</code>

Cette approche permet le retour d'un code d'état HTTP et d'un contenu appropriés en fonction du résultat de l'exécution.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn