Jakarta RESTful Web Services ( JAX-RS ; anteriormente Java API for RESTful Web Services ) es una especificación de API de Jakarta EE que brinda soporte para la creación de servicios web según el patrón arquitectónico Representational State Transfer (REST). [ 1 ] JAX-RS utiliza anotaciones , introducidas en Java SE 5 , para simplificar el desarrollo y la implementación de clientes y puntos finales de servicios web.
A partir de la versión 1.1, JAX-RS forma parte oficial de Java EE 6. Una característica destacable de ser parte oficial de Java EE es que no se requiere ninguna configuración para empezar a usar JAX-RS. Para entornos que no sean Java EE 6 , se requiere una pequeña entrada en el descriptor de despliegue web.xml .
Especificación
JAX-RS proporciona algunas anotaciones para ayudar a mapear una clase de recurso (un POJO ) como un recurso web. Las anotaciones utilizan el paquete Javajakarta.ws.rs (anteriormente se llamaba javax.ws.rspero fue renombrado el 19 de mayo de 2019 [ 2 ] ). Incluyen:
@Pathespecifica la ruta relativa para una clase o método de recurso.@GET,@POST,@PUT,@PATCH(desde JAX-RS 2.1),@DELETE,@HEADy@OPTIONS(desde JAX-RS 1.1) especifican el tipo de solicitud HTTP de un recurso.@Producesespecifica los tipos de medios de Internet de respuesta (utilizados para la negociación de contenido ).@Consumesespecifica los tipos de medios de Internet aceptados para la solicitud.
Además, proporciona anotaciones adicionales a los parámetros del método para extraer información de la solicitud. Todas las @*Paramanotaciones tienen una clave de algún tipo que se utiliza para buscar el valor requerido.
@PathParamVincula el parámetro del método a un segmento de ruta.@QueryParamvincula el parámetro del método al valor de un parámetro de consulta HTTP .@MatrixParamvincula el parámetro del método al valor de un parámetro de matriz HTTP .@HeaderParamVincula el parámetro del método a un valor de encabezado HTTP .@CookieParamVincula el parámetro del método al valor de una cookie .@FormParamVincula el parámetro del método a un valor de formulario .@DefaultValueespecifica un valor predeterminado para las vinculaciones anteriores cuando no se encuentra la clave.@Contextdevuelve todo el contexto del objeto (por ejemplo@Context HttpServletRequest request).
JAX-RS 2.0
En enero de 2011, el JCP formó el grupo de expertos JSR 339 para trabajar en JAX-RS 2.0. Los objetivos principales son (entre otros) una API de cliente común y soporte para hipermedia siguiendo el principio HATEOAS de REST . En mayo de 2013, alcanzó la fase de lanzamiento final. [ 3 ]
El 22 de agosto de 2017 se publicó la versión final de la especificación JAX-RS 2.1 [ 4 ] . Las principales características nuevas compatibles incluyen eventos enviados por el servidor , clientes reactivos y JSON-B. [ 5 ]
Implementaciones
Las implementaciones de JAX-RS incluyen: [ 6 ]
- Apache CXF , un framework de servicios web de código abierto.
- Jersey , la implementación de referencia de Sun (ahora Oracle )
- RESTeasy , la implementación de JBoss
- Restlet
- Servidor de aplicaciones WebSphere de IBM :
- Versión 7.0: a través del "Paquete de funciones para aplicaciones con capacidad de comunicación"
- Versión 8.0 en adelante: de forma nativa
- Servidor de aplicaciones WebLogic de Oracle , ver notas
- Apache Tuscany ( http://tuscany.apache.org/documentation-2x/sca-java-bindingrest.html ), descontinuado
- Marco de trabajo Cuubez ( https://web.archive.org/web/20190707005602/http://cuubez.com/ )
- Everrest , la implementación de Codenvy
- Jello-Framework , un marco de trabajo para aplicaciones Java optimizado para Google App Engine, que incluye un potente motor RESTful y un modelo integral de autorización de datos.
- Apache TomEE , una adición a Apache Tomcat
Referencias
- ↑ Hadley, pág. 1.
- ↑ "Cambiar el nombre del commit del paquete en Github" . GitHub .
- ↑ "JSR 339: JAX-RS 2.0: La API de Java para servicios web RESTful" . Proceso de la comunidad Java .
- ↑ "JSR 370: Especificación de la API de Java para servicios web RESTful (JAX-RS 2.1)" . Proceso de la comunidad Java .
- ↑ "JSR 367: API de Java para JSON Binding (JSON-B)" . Proceso de la comunidad Java .
- ↑ Little, Mark (1 de octubre de 2008). "Una comparación de implementaciones de JAX-RS" .
- Hadley, Marc y Paul Sandoz, eds. (17 de septiembre de 2009). JAX-RS: API de Java para servicios web RESTful (versión 1.1), Java Community Process
Enlaces externos
Tutoriales
- https://javabrains.io/courses/javaee_jaxrs/ Archivado el 25/05/2019 en Wayback Machine
- http://docs.oracle.com/javaee/6/tutorial/doc/giepu.html
- http://www.vogella.com/tutorials/REST/article.html
- http://www.mkyong.com/tutorials/jax-rs-tutorials/
- http://www.coderpanda.com/jax-rs-tutorial/
- https://www.javavogue.com/2015/03/java-jerseyjax-rs-tutorials/
- http://howtodoinjava.com/restful-web-service/
- https://jakarta.ee/learn/starter-guides/how-to-build-a-restful-web-service/
- https://jakarta.ee/learn/starter-guides/how-to-secure-a-restful-web-service/
- https://jakarta.ee/learn/docs/jakartaee-tutorial/current/websvcs/rest/rest.html
- https://jakarta.ee/learn/specification-guides/restful-web-services-explained/
- Plataforma empresarial Java
- API de Java para XML
- Especificaciones del servicio web