Jakarta RESTful Web Services (JAX-RS) | |
---|---|
Original author(s) | Sun Microsystems |
Developer(s) | Eclipse Foundation |
Stable release | 3.1.9 / October 17, 2024; 8 months ago (2024-10-17) |
Repository | |
Written in | Java |
Operating system | Cross-platform |
Platform | Java |
Type | Application framework |
License | EPL 2.0 orGPL v2 w/Classpath exception |
Website | projects![]() |
Jakarta RESTful Web Services, (JAX-RS; formerlyJava API for RESTful Web Services) is aJakarta EEAPI specification that provides support in creatingweb services according to theRepresentational State Transfer (REST) architectural pattern.[1] JAX-RS usesannotations, introduced inJava SE 5, to simplify the development and deployment of web service clients and endpoints.
From version 1.1 on, JAX-RS is an official part ofJava EE 6. A notable feature of being an official part of Java EE is that no configuration is necessary to start using JAX-RS. For non-Java EE 6 environments a small entry in theweb.xmldeployment descriptor is required.
JAX-RS provides some annotations to aid in mapping a resource class (aPOJO) as a web resource. The annotations use theJava packagejakarta.ws.rs
(previously wasjavax.ws.rs
but was renamed on May 19, 2019[2]). They include:
@Path
specifies the relativepath for a resource class or method.@GET
,@POST
,@PUT
,@PATCH
(since JAX-RS 2.1),@DELETE
,@HEAD
and@OPTIONS
(since JAX-RS 1.1) specify theHTTP request type of a resource.@Produces
specifies the responseInternet media types (used forcontent negotiation).@Consumes
specifies the accepted request Internet media types.In addition, it provides further annotations tomethod parameters to pull information out of the request. All the@*Param
annotations take a key of some form which is used to look up the value required.
@PathParam
binds the method parameter to a path segment.@QueryParam
binds the method parameter to the value of an HTTPquery parameter.@MatrixParam
binds the method parameter to the value of anHTTP matrix parameter.@HeaderParam
binds the method parameter to anHTTP header value.@CookieParam
binds the method parameter to acookie value.@FormParam
binds the method parameter to aform value.@DefaultValue
specifies adefault value for the above bindings when the key is not found.@Context
returns the entire context of the object (for example@Context HttpServletRequest request
).In January 2011 the JCP formed the JSR 339 expert group to work on JAX-RS 2.0. The main targets are (among others) a common client API and support for Hypermedia following theHATEOAS-principle ofREST. In May 2013, it reached the Final Release stage.[3]
On 2017-08-22 JAX-RS 2.1[4] specification final release was published.Main new supported features includeserver-sent events,reactive clients,and JSON-B.[5]
Implementations of JAX-RS include:[6]