blob: 3045b0f14a00d69d0ca331dffac5d4eecc30146e [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.2) on Wed Sep 23 17:36:24 GMT 2020 -->
<title>Overview (jakarta.ws.rs-api 3.0.0 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2020-09-23">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="jquery/jquery-3.3.1.js"></script>
<script type="text/javascript" src="jquery/jquery-migrate-3.0.1.js"></script>
<script type="text/javascript" src="jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Overview (jakarta.ws.rs-api 3.0.0 API)";
}
}
catch(err) {
}
//-->
var pathtoroot = "./";
var useModuleDirectories = true;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<div class="header">
<h1 class="title">Jakarta RESTful Web Services 3.0 API Specification </h1>
</div>
<main role="main">
<div class="contentContainer">
<div class="block"><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>
&#64;Path("widgets/{widgetid}")
&#64;Consumes("application/widgets+xml")
&#64;Produces("application/widgets+xml")
public class WidgetResource {
&#64;GET
public String getWidget(&#64;PathParam("widgetid") String id) {
return getWidgetAsXml(id);
}
&#64;PUT
public void updateWidget(&#64;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
<a href="https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html?is-external=true" title="class or interface in java.net" class="externalLink"><code>plain HTTP communication API</code></a> 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 &ndash;
a key constraint of the REST architectural style &ndash; 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></div>
</div>
<div class="contentContainer">
<table class="overviewSummary">
<caption><span>Packages</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor" id="i0">
<th class="colFirst" scope="row"><a href="jakarta/ws/rs/package-summary.html">jakarta.ws.rs</a></th>
<td class="colLast">
<div class="block">High-level interfaces and annotations used to create RESTful service resources.</div>
</td>
</tr>
<tr class="rowColor" id="i1">
<th class="colFirst" scope="row"><a href="jakarta/ws/rs/client/package-summary.html">jakarta.ws.rs.client</a></th>
<td class="colLast">
<div class="block">The JAX-RS client API</div>
</td>
</tr>
<tr class="altColor" id="i2">
<th class="colFirst" scope="row"><a href="jakarta/ws/rs/container/package-summary.html">jakarta.ws.rs.container</a></th>
<td class="colLast">
<div class="block">Container-specific JAX-RS API.</div>
</td>
</tr>
<tr class="rowColor" id="i3">
<th class="colFirst" scope="row"><a href="jakarta/ws/rs/core/package-summary.html">jakarta.ws.rs.core</a></th>
<td class="colLast">
<div class="block">Low-level interfaces and annotations used to create RESTful service resources.</div>
</td>
</tr>
<tr class="altColor" id="i4">
<th class="colFirst" scope="row"><a href="jakarta/ws/rs/ext/package-summary.html">jakarta.ws.rs.ext</a></th>
<td class="colLast">
<div class="block">APIs that provide extensions to the types supported by the JAX-RS API.</div>
</td>
</tr>
<tr class="rowColor" id="i5">
<th class="colFirst" scope="row"><a href="jakarta/ws/rs/sse/package-summary.html">jakarta.ws.rs.sse</a></th>
<td class="colLast">
<div class="block">Server-Sent Events related API.</div>
</td>
</tr>
</tbody>
</table>
</div>
</main>
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li class="navBarCell1Rev">Overview</li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li><a href="deprecated-list.html">Deprecated</a></li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small><p align="left">Copyright &#169; 2018, 2020 Eclipse Foundation.<br>Use is subject to <a href="./resources/EFSL.html" target="_top">license terms</a>.</small></p>
</footer>
</body>
</html>