| [//]: # " 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. |