J'utilise Spring Boot pour une API REST simple et j'aimerais renvoyer un code d'état HTTP correct si quelque chose échoue.
@RequestMapping(value="/rawdata/", method = RequestMethod.PUT)
@ResponseBody
@ResponseStatus( HttpStatus.OK )
public RestModel create(@RequestBody String data) {
// code ommitted..
// how do i return a correct status code if something fails?
}
Étant nouveau dans Spring et Spring Boot, la question de base est de savoir comment renvoyer différents codes de statut lorsque quelque chose ne va pas ou échoue?
la source
javax.servlet.http.HttpServletResponse
semble pas avoir tous les StatusCodesorg.springframework.http.HttpStatus
. Vous pouvez donc utiliserHttpStatus.UNPROCESSABLE_ENTITY.value()
pour passer la valeur int dans response.setStatus. Cela fonctionne également parfaitement pour la gestion des erreurs en utilisant@ExceptionHandler
.Pour ce faire, vous pouvez utiliser ResponseEntity comme objet de retour.
la source
Essayez ce code:
la source
ErrorBean
?Un bon moyen est d'utiliser l'exception ResponseStatusException de Spring
Plutôt que de renvoyer un
ResponseEntity
ou similaire, vous lancez simplement leResponseStatusException
depuis le contrôleur avec unHttpStatus
et une cause, par exemple:ou:
Cela se traduit par une réponse au client contenant l'état HTTP (par exemple 400 Bad request) avec un corps comme:
la source
Si vous souhaitez renvoyer un code de statut personnalisé, vous pouvez utiliser ResponseEntity comme ici:
La CustomHttpStatusValue peut être n'importe quel entier à l'intérieur ou à l'extérieur des codes d'état HTTP standard.
la source
Il existe différentes façons de renvoyer le code d'état, 1: la classe RestController doit étendre la classe BaseRest, dans la classe BaseRest, nous pouvons gérer les exceptions et renvoyer les codes d'erreur attendus. par exemple :
la source