| <!-- |
| |
| Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved. |
| |
| This program and the accompanying materials are made available under the |
| terms of the Eclipse Public License v. 2.0, which is available at |
| http://www.eclipse.org/legal/epl-2.0. |
| |
| This Source Code may also be made available under the following Secondary |
| Licenses when the conditions for such availability set forth in the |
| Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| version 2 with the GNU Classpath Exception, which is available at |
| https://www.gnu.org/software/classpath/license.html. |
| |
| SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| |
| --> |
| |
| <html xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html"> |
| <body> |
| <p>Jakarta RESTful Web Services provides a foundational API to develop web services |
| following the Representational State Transfer (REST) architectural pattern. |
| This API is distributed under the <a href="resources/EFSL.html">Eclipse Foundation Specification License</a>.</p> |
| |
| <h1>Web resources</h1> |
| |
| <p>JAX-RS core APIs enable developers to rapidly build Web applications in Java that are characteristic |
| of the best designed parts of the Web. The API brings in support for designing and implementing |
| Web resources and application that follow principles of |
| <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">REST (Representational |
| State Transfer)</a> architectural style to the Java Platform.</p> |
| |
| <p>In JAX-RS, Java POJOs can be exposed as RESTful Web resources independent of the underlying technology |
| using a high level easy-to-use declarative annotation-based API. E.g.:</p> |
| |
| <pre> |
| @Path("widgets/{widgetid}") |
| @Consumes("application/widgets+xml") |
| @Produces("application/widgets+xml") |
| public class WidgetResource { |
| |
| @GET |
| public String getWidget(@PathParam("widgetid") String id) { |
| return getWidgetAsXml(id); |
| } |
| |
| @PUT |
| public void updateWidget(@PathParam("widgetid") String id, |
| Source update) { |
| updateWidgetFromXml(id, update); |
| } |
| |
| ... |
| } |
| </pre> |
| |
| <h1>Web resource clients</h1> |
| |
| <p>JAX-RS client API is a Java based API used to access resources on the Web. It is not restricted |
| to resources implemented using JAX-RS. It provides a higher-level abstraction compared to a |
| {@link java.net.HttpURLConnection plain HTTP communication API} as well as integration with the |
| JAX-RS extension providers, in order to enable concise and efficient implementation of |
| reusable client-side solutions that leverage existing and well |
| established client-side implementations of HTTP-based communication.</p> |
| |
| <p>The JAX-RS Client API also encapsulates the Uniform Interface Constraint – |
| a key constraint of the REST architectural style – and associated data |
| elements as client-side Java artifacts and supports a pluggable architecture |
| by defining multiple extension points.</p> |
| |
| <p>Following example demonstrates a simple JAX-RS client API usage scenario:</p> |
| |
| <pre> |
| Client client = ClientBuilder.newClient(); |
| |
| client.property("MyProperty", "MyValue") |
| .register(MyProvider.class) |
| .enable(MyFeature.class); |
| |
| Response res = client.target("http://example.org/hello").request("text/plain").get(); |
| String message = res.readEntity(String.class); |
| </pre> |
| |
| <h1>Provider extensions</h1> |
| |
| <p>JAX-RS applications may provide custom extensions to the client and server runtime using the |
| common extension APIs defined in <a href="jakarta/ws/rs/ext/package-summary.html">jakarta.ws.rs.ext</a> |
| package, namely entity providers and entity provider interceptors. Additionally, request and |
| response processing chains on client as well as server side can be further customized by |
| implemening custom request and response filters - see the |
| <a href="jakarta/ws/rs/client/ClientRequestFilter.html">ClientRequestFilter</a>, |
| <a href="jakarta/ws/rs/client/ClientResponseFilter.html">ClientResponseFilter</a>, |
| <a href="jakarta/ws/rs/container/ContainerRequestFilter.html">ContainerRequestFilter</a>, |
| <a href="jakarta/ws/rs/container/ContainerResponseFilter.html">ContainerResponseFilter</a> |
| APIs.</p> |
| </body> |
| </html> |