| <!-- | |
| 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> |