RESTEasy tutorial part two: web parameters
In the first RESTEasy tutorial we have learnt the basics about REST Web services and we have tested a simple RESTful Web service. In this tutorial we will show how to inject web application elements (form parameters, query parameters and more) into a RESTful Web service.
You can use the following annotations to bind HTTP requests to a RESTful web service:
@FormParam
@PathParam
@QueryParam
@HeaderParam
@CookieParam
@MatrixParam
Let's explore all the possible interactions.
@FormParam
The annotation @FormParam can be used to inject the parameters of a Web form into a RESTful Web service.
Here's an example:
Here we are submitting a POST request containing two parameters email and password which are translated into the parameters "e" and "p" of the login method.
Here's the full example:
As an alternative, you can bind the parameters email and password at class level, which can be useful if you need to re-use the same parameters across different methods of the service.
You would need to modify the REST method accordingly:
@PathParam
The @PathParam annotation binds the value of a path segment to a resource method parameter. For example, the following method would intercept an HTTP GET like http://server:port/login/12345 and convert the PathParam "12345" into the String "id"
As for @FormParam, you can embed the @PathParam declaration at class level, if you prefer.
@QueryParam
The @QueryParam annotation binds the value of a path segment to a resource method parameter. For example, the following method would intercept an HTTP GET like http://server:port/login?zip=12345 and inject the query parameter "zip" into the method parameter "zip"
QueryParam can be convenientely used with the DefaultValue annotation so that you can avoid a null pointer exception if no query parameter is passed.
As for @FormParam, you can embed the @PathParam declaration at class level, if you prefer.
@HeaderParam
The @HeaderParam annotation extracts information from the HTTP header and binds it to a method parameter. Example:
@CookieParam
The @CookieParam annotation reads an information stored as a cookie and binds it to a method parameter. Example:
@MatrixParam
The @MatrixParam annotation can be used to bind an expression containing several property=value to a method parameter. For example, supposing you were to invoke an URL like http://server:port/login;name=francesco;surname=marchioni

