Rest web-service having parametrized methods
In the earlier post I explained that how to create REST web-service examples Using Jersey. So for primary setup steps please follow the below given link.
In this post I am going to explain how to deal with parametrized methods in REST web-service by using Jersey API.
System requirement for the application :-
Jersey Jars.
REST Client.
JDK1.6 and above
Eclipse Helios and above.
Tomcat 7.0 and above.
STEPS :-
To create RestWebServiceWithParametrizedMethods dynamic web project Using Jersey
1) Download Jersey jars from this location :- http://jersey.java.net/nonav/documentation/latest
/chapter_deps.html, the required library jars which I am using for this project development is
as below:-
asm-3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.17.jar
jersey-core-1.17.jar
jersey-json-1.17.jar
jersey-server-1.17.jar
jersey-servlet-1.17.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.17.jar
jersey-core-1.17.jar
jersey-json-1.17.jar
jersey-server-1.17.jar
jersey-servlet-1.17.jar
jettison-1.1.jar
jsr311-api-1.1.1.jar
2) Create a dynamic web-project named RestWebServiceWithParametrizedMethods using
Eclipse.
3) Create a package name with com.gaurav.jaxrs.services in the src folder.
4) Create a class name with ParametrizedMethodServicesUsingREST.java and place the below code in the java file.
ParametrizedMethodServicesUsingREST.java
package com.gaurav.jaxrs.services;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("basic")
public class ParametrizedMethodServicesUsingREST {
// This method is called if TEXT_PLAIN is request
@Path("name")
@POST
@Produces(MediaType.TEXT_PLAIN)
public String displayName(String name) {
return "My Name is " + name;
}
public boolean isParsableToInteger(String strValue) {
try {
Integer.parseInt(strValue);
return true;
} catch (NumberFormatException nfe) {
return false;
}
}
@Path("countVowels")
@POST
@Produces(MediaType.TEXT_PLAIN)
public String countVowels(String word) {
int count = 0;
String result = null;
for (int i = 0; i < word.length(); i++) {
if (word.charAt(i) == 'a' || word.charAt(i) == 'A') {
count++;
} else if (word.charAt(i) == 'e' || word.charAt(i) == 'E') {
count++;
} else if (word.charAt(i) == 'i' || word.charAt(i) == 'I') {
count++;
} else if (word.charAt(i) == 'o' || word.charAt(i) == 'O') {
count++;
} else if (word.charAt(i) == 'u' || word.charAt(i) == 'U') {
count++;
}
}
System.out
.println("Number of vowels in the given string is : " + count);
result = String.valueOf(count) +" vowels found in the given string "+word ;
System.out.println(result);
return result;
}
@Path("factorial")
@POST
@Produces(MediaType.TEXT_PLAIN)
public String getFactorial(String inputString) {
String factorialResult = "Not a Valid Number";
if (inputString == null || inputString.trim().length() == 0) {
return "";
}
if (isParsableToInteger(inputString)) {
Long number = Long.parseLong(inputString);
if (number < 0) {
return factorialResult = "Number must be positive";
} else {
Long factorial = number;
for (Long i = (number - 1); i > 1; i--) {
factorial = factorial * i;
}
factorialResult = "Factorial of given number " + number
+ " is " + String.valueOf(factorial);
}
}
return factorialResult;
}
}
5) In the WEB-INF folder, in the web.xml file place the below code in order to configure Jersey servlet
container and servlet URL pattern. Here also we need to pass package name(where the resource
is available) as the initial parameter.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Rest-Web-Service-Using-Jersey</display-name>
<servlet>
<servlet-name>Jersey REST Web Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.gaurav.jaxrs.services</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Web Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
6) Run the application on server, here I am using tomcat7.0 server.
For deploying the application on Tomcat7.0 server and start the server take the reference from location(http://www.javatechtipssharedbygaurav.com/2013/04/rest-web-service-with-crud-operations.html) and go through the STEPS No -15
For deploying the application on Tomcat7.0 server and start the server take the reference from location(http://www.javatechtipssharedbygaurav.com/2013/04/rest-web-service-with-crud-operations.html) and go through the STEPS No -15
7)After deploying the application and starting the tomcat server, we can get the WADL file
For getting the WADL file we can hit below URL.
http://localhost:7075/RestWebServiceWithParametrizedMethods/rest/application.wadl
This URL will provide us WADL file and we can test our REST based web-services using RESTClient
or SOA Client which is a Add-ons for Mozile Firefox. We can get WADL file in this way only if we
are using jersey API for building RESTful Web services.
or SOA Client which is a Add-ons for Mozile Firefox. We can get WADL file in this way only if we
are using jersey API for building RESTful Web services.
8) Open Mozila Firefox browser, Go to Tools menu, click on Add-ons, Search for REST Client or SOA
Client and then click on install button to install the selected plugin. After installation restart the browser and
again go to tools menu and select the installed plugin. I am proceeding with REST Client Add-ons.
Client and then click on install button to install the selected plugin. After installation restart the browser and
again go to tools menu and select the installed plugin. I am proceeding with REST Client Add-ons.
After opening the REST Client-
- Select Http method as POST.
- Pass the corresponding URL for calling a specific method.
- Pass the required parameter in the Body.
- Then in the Response body we can check the Result after click on send.
Result:-
For calling the factorial method, the specified URL is like below:-
http://localhost:7075/RestWebServiceWithParametrizedMethods/rest/basic/factorial
For calling the countVowels method, the specified URL is like below:- http://localhost:7075/RestWebServiceWithParametrizedMethods/rest/basic/countVowels
For calling the name method, the specified URL is like below:-
http://localhost:7075/RestWebServiceWithParametrizedMethods/rest/basic/name
Description of the URL : -
http://localhost:7075/RestWebServiceWithParametrizedMethods/rest/basic/factorial
http://hostname:<portnumber>/nameof the web project/URL pattern/class level path annotation/method level path annotation.
WADL file contents are as follows:-
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 1.17 01/17/2013 03:31 PM" />
<grammars />
<resources
base="http://localhost:7075/RestWebServiceWithParametrizedMethods/rest/">
<resource path="basic">
<resource path="factorial">
<method id="getFactorial" name="POST">
<request>
<representation mediaType="*/*" />
</request>
<response>
<representation mediaType="text/plain" />
</response>
</method>
</resource>
<resource path="countVowels">
<method id="countVowels" name="POST">
<request>
<representation mediaType="*/*" />
</request>
<response>
<representation mediaType="text/plain" />
</response>
</method>
</resource>
<resource path="name">
<method id="displayName" name="POST">
<request>
<representation mediaType="*/*" />
</request>
<response>
<representation mediaType="text/plain" />
</response>
</method>
</resource>
</resource>
</resources>
</application>
No comments:
Post a Comment