<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>Apache Wink : JAX-RS Parameters</title>
	    <link rel="stylesheet" href="styles/site.css" type="text/css" />
        <META http-equiv="Content-Type" content="text/html; charset=UTF-8">	    
    </head>

    <body>
	    <table class="pagecontent" border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#ffffff">
		    <tr>
			    <td valign="top" class="pagebody">
				    <div class="pageheader">
					    <span class="pagetitle">
                            Apache Wink : JAX-RS Parameters
                                                    </span>
				    </div>
				    <div class="pagesubheading">
					    This page last changed on Sep 22, 2009 by <font color="#0050B2">michael</font>.
				    </div>

				    <h1><a name="JAX-RSParameters-Parameters"></a>Parameters</h1>

<p>Parameters are used to pass and add additional information to a request.  Search queries, offsets/pages in a collection, and other information can be used.  While parameters are sometimes used to add more verbs to HTTP, it is advised not to use parameters as a way to create new HTTP methods or to make existing HTTP methods break the generally understood attributes (i.e. idempotent).</p>

<p>Parameters can be any basic Java primitive type including java.lang.String as well as types with a constructor that takes in a single String or a valueOf(String) static method.In addition, List, SortedSet, and Set can be used where the generic type is one of the previously mentioned types such as a <b>Set&lt;String&gt;</b> when a parameter can have multiple values.</p>

<p>When full control is needed for parsing requests, it is generally recommend that developers use a String as the parameter type so that some basic inspection can be performed and developers can customize error path responses.</p>

<p><a name="JAX-RSParameters-QueryParameter"></a></p>

<h3><a name="JAX-RSParameters-QueryParameters%28@QueryParam%29"></a>Query Parameters (@QueryParam)</h3>

<p>Query parameters are one of the better known parameters.  A query string is appended to the request URL with a leading "?" and then name/value pairs.</p>

<div class='panelMacro'><table class='tipMacro'><colgroup><col width='24'><col></colgroup><tr><td valign='top'><img src="images/icons/emoticons/check.gif" width="16" height="16" align="absmiddle" alt="" border="0"></td><td><b>Query Parameter Examples</b><br />Refer to the following links:<br/>
<a href="http://www.google.com/search?q=apache+wink">http://www.google.com/search?q=apache+wink</a><br/>
<a href="http://www.example.com/users?offset=100&amp;numPerPage=20">http://www.example.com/users?offset=100&amp;numPerPage=20</a>&nbsp;</td></tr></table></div>

<p>In order to enable JAX-RS to read a query parameters, add a parameter to the resource method and annotate with <b>@QueryParam</b>:</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">@Path(<span class="code-quote">"/example"</span>)
<span class="code-keyword">public</span> class RootResource {
    @GET
    <span class="code-keyword">public</span> Response invokeWithParameters(@QueryParam(<span class="code-quote">"q"</span>) <span class="code-object">String</span> searchTerm) {
        <span class="code-keyword">if</span>(q == <span class="code-keyword">null</span>) {
            <span class="code-keyword">return</span> Response.status(Status.BAD_REQUEST).build();
        }
        /* <span class="code-keyword">do</span> a search */
        <span class="code-keyword">return</span> Response.ok(/* some entity here */).build();
    }
}
</pre>
</div></div>
<p>If a HTTP GET request to "/example?q=abcd" is made, searchTerm will have "abcd" as the value when invoked.</p>

<p><a name="JAX-RSParameters-PathParameter"></a></p>

<h3><a name="JAX-RSParameters-PathParameters%28@PathParam%29"></a>Path Parameters (@PathParam)</h3>

<p>Path parameters take the incoming URL and match parts of the path as a parameter.  By including <em>{name}</em> in a <b>@Path</b> annotation, the resource can later access the matching part of the URI to a path parameter with the corresponding "<b>name</b>".  Path parameters make parts of the request URL as parameters which can be useful in embedding request parameter information to a simple URL.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">@Path(<span class="code-quote">"/books/{bookid}"</span>)
<span class="code-keyword">public</span> class BookResource {
    @GET
    <span class="code-keyword">public</span> Response invokeWithBookId(@PathParam(<span class="code-quote">"bookid"</span>) <span class="code-object">String</span> bookId) {
        /* get the info <span class="code-keyword">for</span> bookId */
        <span class="code-keyword">return</span> Response.ok(/* some entity here */).build();
    }

    @GET
    @Path(<span class="code-quote">"{language}"</span>)
    <span class="code-keyword">public</span> Response invokeWithBookIdAndLanguage(@PathParam(<span class="code-quote">"bookid"</span>) <span class="code-object">String</span> bookId, @PathParam(<span class="code-quote">"language"</span>) <span class="code-object">String</span> language) {
        /* get the info <span class="code-keyword">for</span> bookId */
        <span class="code-keyword">return</span> Response.ok(/* some entity here */).build();
    }
}
</pre>
</div></div>
<p>In the previous example, HTTP GET to /books/1 or to /books/abcd would result in invokeWithBookId being called.  If a HTTP GET request is issued to /books/1/en or /books/1/fr or /books/abcd/jp, then invokeWithBookIdAndLanguage would be invoked with the appropriate parameters.</p>

<p><a name="JAX-RSParameters-MatrixParameter"></a></p>

<h3><a name="JAX-RSParameters-MatrixParameters%28@MatrixParam%29"></a>Matrix Parameters (@MatrixParam)</h3>

<p>Matrix parameters are not as widely used on the Internet today.  However, you can read a MatrixParam just as easily as any other parameter.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">@Path(<span class="code-quote">"/"</span>)
<span class="code-keyword">public</span> class RootResource {
    @GET
    <span class="code-keyword">public</span> Response invokeWithParameters(@MatrixParam(<span class="code-quote">"name"</span>) <span class="code-object">String</span> name) {
        <span class="code-keyword">if</span>(name == <span class="code-keyword">null</span>) {
            <span class="code-keyword">return</span> Response.status(Status.BAD_REQUEST).build();
        }
        <span class="code-keyword">return</span> Response.ok(/* some entity here */).build();
    }
}
</pre>
</div></div>
<p><a name="JAX-RSParameters-HeaderParameter"></a></p>

<h3><a name="JAX-RSParameters-HeaderParameters%28@HeaderParam%29"></a>Header Parameters (@HeaderParam)</h3>

<p>Header parameters are useful especially when there are additional metadata control parameters that need to be passed in for example, security information, cache information, and so forth.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">@Path(<span class="code-quote">"/"</span>)
<span class="code-keyword">public</span> class RootResource {
    @GET
    <span class="code-keyword">public</span> Response invokeWithParameters(@HeaderParam(<span class="code-quote">"controlInfo"</span>) <span class="code-object">String</span> controlInfo) {
        <span class="code-keyword">if</span>(controlInfo == <span class="code-keyword">null</span>) {
            <span class="code-keyword">return</span> Response.status(Status.BAD_REQUEST).build();
        }
        <span class="code-keyword">return</span> Response.ok(/* some entity here */).build();
    }
}
</pre>
</div></div>

<p><a name="JAX-RSParameters-CookieParameter"></a></p>

<h3><a name="JAX-RSParameters-CookieParameters%28@CookieParam%29"></a>CookieParameters (@CookieParam)</h3>

<p>In a REST application, requests are stateless although applications sometimes use Cookies for various reasons, such as adding some stateless resource viewing information without embedding it into the URL such as the maximum number of items to retrieve.  The CookieParam annotation is used to easily retrieve the information.</p>

<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent">
<pre class="code-java">@Path(<span class="code-quote">"/"</span>)
<span class="code-keyword">public</span> class RootResource {
    @GET
    <span class="code-keyword">public</span> Response invokeWithParameters(@CookieParam(<span class="code-quote">"max"</span>) <span class="code-object">String</span> maximumItems) {
        <span class="code-keyword">if</span>(userId == <span class="code-keyword">null</span>) {
            <span class="code-keyword">return</span> Response.status(Status.BAD_REQUEST).build();
        }
        <span class="code-keyword">return</span> Response.ok(/* some entity here */).build();
    }
}
</pre>
</div></div>

				    
                    			    </td>
		    </tr>
	    </table>
	    <table border="0" cellpadding="0" cellspacing="0" width="100%">
			<tr>
				<td height="12" background="http://cwiki.apache.org/confluence/images/border/border_bottom.gif"><img src="images/border/spacer.gif" width="1" height="1" border="0"/></td>
			</tr>
		    <tr>
			    <td align="center"><font color="grey">Document generated by Confluence on Nov 11, 2009 06:57</font></td>
		    </tr>
	    </table>
    </body>
</html>