Maison  >  Article  >  Java  >  Comment répondre avec HTTP 400 « Bad Request » dans Spring MVC @ResponseBody ?

Comment répondre avec HTTP 400 « Bad Request » dans Spring MVC @ResponseBody ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-31 05:54:01332parcourir

How to respond with HTTP 400

Réponse avec une erreur HTTP 400 dans Spring MVC @ResponseBody

Lors du développement d'API JSON à l'aide de l'approche @ResponseBody de Spring MVC, il peut y avoir des scénarios dans lesquels vous devez répondre avec des codes d'état HTTP spécifiques, tels que 400 "Bad Request".

Considérez la méthode d'action suivante :

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public String match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        // How to respond with HTTP 400 "Bad Request"?
    }
    return json;
}</code>

Dans cet exemple, la méthode est annotée avec @ResponseBody , indiquant que la valeur de retour doit être écrite directement dans le corps de la réponse HTTP. Cependant, le code initial ne fournit pas de mécanisme pour répondre avec une erreur HTTP 400.

Pour résoudre ce problème, il existe plusieurs approches à considérer :

  1. Modification du type de retour en ResponseEntity : en modifiant le type de retour de la méthode en ResponseEntity<>, vous accédez aux méthodes qui vous permettent de définir le code d'état HTTP. Vous pouvez ensuite utiliser ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null) pour renvoyer une réponse d'erreur 400.
  2. Utilisation des méthodes d'assistance ResponseEntity : pour les versions Spring 4.1 et supérieures, ResponseEntity fournit méthodes d'assistance telles que ResponseEntity.badRequest().body(null) et ResponseEntity.ok(json) pour simplifier le processus de création de réponse.

Par conséquent, la méthode mise à jour ressemblerait à :

<code class="java">@RequestMapping(value = "/matches/{matchId}", produces = "application/json")
@ResponseBody
public ResponseEntity<String> match(@PathVariable String matchId) {
    String json = matchService.getMatchJson(matchId);
    if (json == null) {
        return ResponseEntity.badRequest().body(null);
    }
    return ResponseEntity.ok(json);
}</code>

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