Java Reference
In-Depth Information
Chapter 24. Examples for
Chapter 10
In
Chapter 10
,
you learned about many of the concepts of HATEOAS and how to use JAX-
RS to add these principles to your RESTful web services. In this chapter, you'll look through
two different examples. The first shows you how to introduce Atom links into your XML
documents. The second uses
Link
headers to publish state transitions within a RESTful web
service application.
Example ex10_1: Atom Links
This example is a slight modification of the
ex06_1
example introduced in
Chapter 21
.
It ex-
pands the
CustomerResource
RESTful web service so that a client can fetch subsets of the
customer database. If a client does a
GET /customers
request in our RESTful application, it
will receive a subset list of customers in XML. Two Atom links are embedded in this docu-
ment that allow you to view the next or previous sets of customer data. Example output
would be:
<customers>
<customers>
<customer
<customer id=
"3"
>
...
</customer>
</customer>
<customer
<customer id=
"4"
>
...
</customer>
</customer>
<link rel=
"next"
href="http://example.com/customers?start=5
&
size=2"
type="application/xml"/>
<link rel=
"previous"
href="http://example.com/customers?start=1
&
size=2"
type="application/xml"/>
</customers>
</customers>
The
next
and
previous
links are URLs pointing to the same
/customers
URL, but they
contain URI query parameters indexing into the customer database.
The Server Code
The first bit of code is a JAXB class that maps to the
<customers>
element. It must be cap-
able of holding an arbitrary number of
Customer
instances as well as the Atom links for our
next
and
previous
link relationships. We can use the
javax.ws.rs.core.Link
class with
its JAXB adapter to represent these links: