Jakarta RESTful Web Services

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Jakarta RESTful Web Services (JAX-RS)
Original authorSun Microsystems
DeveloperEclipse Foundation
Stable release
3.1.9 / October 17, 2024; 17 months ago (2024-10-17)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inJava
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemCross-platform
    PlatformJava
    TypeApplication framework
    LicenseEPL 2.0 or GPL v2 w/Classpath exception

    Jakarta RESTful Web Services, (JAX-RS; formerly Java API for RESTful Web Services) is a Jakarta EE API specification that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern.[1] JAX-RS uses annotations, introduced in Java 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 of Java 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 the web.xml deployment descriptor is required.

    Specification

    [edit | edit source]

    JAX-RS provides some annotations to aid in mapping a resource class (a POJO) as a web resource. The annotations use the Java package jakarta.ws.rs (previously was javax.ws.rs but was renamed on May 19, 2019[2]). They include:

    • @Path specifies the relative path 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 the HTTP request type of a resource.
    • @Produces specifies the response Internet media types (used for content negotiation).
    • @Consumes specifies the accepted request Internet media types.

    In addition, it provides further annotations to method 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 HTTP query parameter.
    • @MatrixParam binds the method parameter to the value of an HTTP matrix parameter.
    • @HeaderParam binds the method parameter to an HTTP header value.
    • @CookieParam binds the method parameter to a cookie value.
    • @FormParam binds the method parameter to a form value.
    • @DefaultValue specifies a default value for the above bindings when the key is not found.
    • @Context returns the entire context of the object (for example @Context HttpServletRequest request).

    JAX-RS 2.0

    [edit | edit source]

    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 the HATEOAS-principle of REST. 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 include server-sent events, reactive clients, and JSON-B.[5]

    Implementations

    [edit | edit source]

    Implementations of JAX-RS include:[6]

    References

    [edit | edit source]
    1. ^ Hadley, p. 1.
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]
    • Lua error in Module:Official_website at line 94: attempt to index field 'wikibase' (a nil value).

    Tutorials

    [edit | edit source]