¿Cómo devolver un código de estado HTTP diferente desde un controlador Spring MVC?

Hola chicos, si se preguntan cómo devolver diferentes códigos de estado HTTP desde un controlador Spring MVC, entonces ha venido al lugar correcto. Puede usar la anotación @ResponseCode en Spring MVC para enviar diferentes códigos HTTP al cliente como parte de la respuesta HTTP. Si está desarrollando API REST, incluso puede @RestControler para hacer ese trabajo. Este artículo demostrará cómo devolver diferentes estados HTTP para un controlador Spring MVC. Antes de la implementación, todo lo que necesitamos es comprender qué pasa con los tipos de retorno HTTP y por qué los necesitamos. Echemos un vistazo rápido a esto.

Como desarrollador, todo lo que necesita comprender es que debe brindar una mejor experiencia a los usuarios de su sistema para una mejor interacción. Dejar que otros desarrolladores, por qué ocurre el error en el código, es una práctica recomendada que se utiliza para desarrollar software bien organizado. 

Los desarrolladores que usan su servicio pueden trabajar de manera más eficiente porque se reducen las posibilidades de falla. Aquí es donde entran en juego los códigos de estado HTTP, junto con un breve mensaje en el cuerpo de la respuesta que explica lo que está sucediendo.
Antes de entrar en un ejemplo, analicemos los tipos de códigos de estado HTTP. Por cierto, si es nuevo en Spring Framework y necesita recursos para aprender Spring de manera guiada, también puede consultar los mejores cursos y libros recomendados de Spring Framework para comenzar. 
https://googleads.g.doubleclick.net/pagead/ads?gdpr=0&us_privacy=1—&client=ca-pub-5808379456926196&output=html&h=280&slotname=6534721145&adk=515902528&adf=3743641253&pi=t.ma~as.6534721145&w=336&lmt=1632454038&psa=1&format=336×280&url=https%3A%2F%2Fjavarevisited.blogspot.com%2F2021%2F09%2Fhow-to-return-different-http-status-from-sprnig-mvc-controller.html%23axzz77Ln08dc9&flash=0&host=ca-host-pub-1556223355139109&wgl=1&uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiOTMuMC40NTc3LjgyIixbXSxudWxsLG51bGwsIjY0Il0.&tt_state=W3siaXNzdWVyT3JpZ2luIjoiaHR0cHM6Ly9hdHRlc3RhdGlvbi5hbmRyb2lkLmNvbSIsInN0YXRlIjo3fV0.&dt=1632455068807&bpp=5&bdt=1448&idt=1006&shv=r20210922&mjsv=m202109200201&ptt=9&saldr=aa&abxe=1&prev_fmts=0x0%2C336x280&nras=1&correlator=6893907450861&frm=20&pv=1&ga_vid=1637453438.1625718109&ga_sid=1632455069&ga_hid=1462644295&ga_fc=0&u_tz=-300&u_his=3&u_h=768&u_w=1280&u_ah=728&u_aw=1280&u_cd=24&adx=301&ady=845&biw=1263&bih=600&scr_x=0&scr_y=0&eid=31062579%2C21066108%2C21066110%2C21067496&oid=3&pvsid=411295644385198&pem=572&ref=https%3A%2F%2Fjavarevisited.blogspot.com%2F2021%2F&eae=0&fc=1920&brdim=0%2C0%2C0%2C0%2C1280%2C0%2C1280%2C728%2C1280%2C600&vis=1&rsz=%7C%7CoeEbr%7C&abl=CS&pfx=0&fu=0&bc=31&ifi=3&uci=a!3&btvi=1&fsb=1&xpc=KNpcgahKlq&p=https%3A//javarevisited.blogspot.com&dtd=1022

Códigos HTTP

Simplemente, el código HTTP consta de 3 dígitos que vienen con la respuesta de la solicitud HTTP. A partir del primer dígito de 3 dígitos, podemos identificar el tipo de respuesta de las solicitudes HTTP. 
Informativo (comienza con el dígito 1 ex- 1XX): se recibe la solicitud y el proceso continúa. Alerta al remitente para que espere la respuesta final.
Exitoso (comienza con el dígito 2 ex-2XX): la solicitud se recibió y aceptó correctamente.
Redirección (comienza con 3 ex – 3XX): la solicitud se recibió correctamente, pero es necesario realizar más acciones para completar la solicitud.
Error del cliente (comienza con 4 ex – 4XX): el cliente es el que causa el error y debe corregirse para enviar la solicitud.
Error del servidor (comienza con 5 ex – 5XX): el error fue causado por el servidor.

Devolver código de estado con @ResponseStatus – Ejemplo

Spring Framework nos ayuda al proporcionar una enumeración que contiene todos los códigos de estado HTTP. Es una anotación flexible que se puede usar en controladores a nivel de clase o método, en clases de excepción personalizadas y en clases @ControllerAdvice .
En este método, usamos la anotación @ResponseBody en ambos casos. Cuando se usa a nivel de clase, todos los métodos de clase darán como resultado una respuesta con el código de estado HTTP especificado. Todos los métodos que están anotados con @ResponseStatus ( código = HttpStatus.OK, motivo = “OK”)  no devuelven un código de error y solo devolverán el código de estado 200 por defecto.

@Controller 
@ResponseBody
@ResponseStatus (HttpStatus.SERVICE_UNAVAILABLE)
public class StudentController {

@GetMapping ( "/ Método" )
@ResponseStatus (código = HttpStatus.OK, razón = "OK" )
pública Cadena OK () {
retorno "Nivel Clase HTTP Estado Anulado. El estado HTTP será correcto (CÓDIGO 200) \ n " ;
}

@GetMapping ( "/ error" )
public String serviceUnavailable () {
return "El estado HTTP será SERVICE_UNAVAILABLE (CODE 503) \ n "
}

}

Según este ejemplo, Spring Fremework responderá con un código 406 si recibe una solicitud GET a la URL “/ método” .

Devolver código de estado con una excepción.

Ahora, veamos otro ejemplo de un método de controlador para devolver el estado HTTP en caso de error o excepción. Para demostrar esto, agregaremos el segundo método al controlador para mostrar cómo usar una excepción para devolver un código de estado.

@RequestMapping (valor = "/ excepción" , método = RequestMethod . GET ) 
@ResponseBody
public ResponseEntity sendViaException () {
lanzar nueva ForbiddenException ();
}

Si la solicitud GET llegará a la ruta URL “/ excepción” , lanzará una ForbiddenException y separará la clase. 
Se trata de cómo devolver diferentes códigos de estado HTTP desde un controlador Spring MVC. Este es un concepto importante con el que todo desarrollador de Java debería estar familiarizado. Entonces, en este tutorial, discutimos los diferentes estados HTTP para un controlador Spring MVC. Nos vemos en el próximo tutorial.

EXTRAIDO DE