blob: 8e84dcf4e618dd47e6f06bf8bfde310a9dfe3584 [file] [log] [blame]
[//]: # " Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. "
[//]: # " "
[//]: # " This program and the accompanying materials are made available under the "
[//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at "
[//]: # " http://www.eclipse.org/org/documents/edl-v10.php. "
[//]: # " "
[//]: # " SPDX-License-Identifier: BSD-3-Clause "
Declarative Hyperlinking Example
================================
This example demonstrates how to use the declarative hyperlink
annotations.
Contents
--------
The example consists of one resource class and one representation class
along with a couple of model classes:
`org.glassfish.jersey.examples.linking.resources.ItemResource`
A resource class that produces a XML response to an HTTP GET.
`com.sun.jersey.samples.linking.representation.ItemRepresentation`
A JAXB representation class used to produce XML. This class also
contains @Link and @Ref annotations to produce hyperlinks in the
XML document.
The mapping of the URI path space is presented in the following table:
URI path | Resource class | HTTP methods
---------------------- | ---------------- | --------------
**_/items/{index}_** | ItemResource | GET
Sample Response
---------------
You can access resources of this application also using curl:
> curl -v http://localhost:8080/items/1
In this example you should see an XML snippet with a next and a previous
link.
```xml
<item>
<name>Item 1</name>
<link href="http://localhost:8080/items/1" rel="self"/>
<links>
<link href="http://localhost:8080/items/2" rel="next"/>
<link href="http://localhost:8080/items/0" rel="prev"/>
</links>
</item>
```
Running the Example
-------------------
Run the example as follows:
> mvn clean compile exec:java
This deploys current example using Grizzly. You can access the
application at:
- <http://localhost:8080/items/0>\
- <http://localhost:8080/items/1>\
- <http://localhost:8080/items/2>\
- <http://localhost:8080/items/3>\
- <http://localhost:8080/items/4>\
Notice how the first has a self link, a next link but no previous link,
the second, third and fourth have all three and the last one only has a
self link and prev link.
Observe the HTTP headers included in the responses (e.g. via `curl -v`).
Notice that there is a HTTP Link header for next and previous when
appropriate.