Java中的RESTful Web服务示例
在本教程中,我们将在Eclipse中使用泽西岛使用Java开发RESTful Web服务示例
Java API用于RESTful Web服务(JAX-RS),是一个用于开发人员REST服务的API。
JAX-RS是Java EE6的一部分,使开发人员能够轻松开发REST Web应用程序。
泽西是本规范的参考实施。
泽西州基本上包含REST服务器和一个REST客户端。
核心客户端可以使用jersey lib与服务器通信。
在服务器侧泽时使用扫描预定义类的servlet来识别RESTful资源。
通过Web.xml配置文件的Web应用程序。
此servlet的基本URL是:
http://your_domain:port/display-name/url-pattern/path_from_rest_class
此Servlet分析传入的HTTP请求,并根据请求选择正确的类和方法。
此选择基于类别和方法中提供的注释。
让我们在Java中看到RESTful Web服务示例。
准备工作:
- Java SE 6.
- 从此位置下载泽西州的Zip - https://jersey.java.net/download.html
- Eclipse IDE
1)打开Eclipse。
2)创建名为"RestfulWebServiceExample"的新动态Web项目
3)现在转到我们下载泽西队的位置,然后转到Jersey-Archive-1.17-> lib文件夹。
我们可以拥有所有的jar,但现在我们可以在jars下复制
- ASM-3.1
- 泽西 - 客户-1117
- Jersey-Core-1.17
- 泽西服务器-1.17
- Jersey-servlet-1.17
- JSR311-API-1.1.1
所有上面的粘贴到WebContent-> Web-Inf-> lib复制jar
将所有这些jar添加到Eclipse构建路径。
右键单击项目(RESTFULWSERVICEEXAMPLE) - >属性
单击Java Build Path,然后添加jar,如上图所示。
转到Project-> WebContent-> Web-Inf-> lib并选择所有jar,然后单击确定。
单击"添加到类路径"的"确定"JARS。
4)创建名为"org.igi.javapostssforlearning.webservice"的新包
5)创建Feettoinchandinchtofeetconversionservice。
java.
package org.igi.javapostsforlearning.webservices;
/**
* @author igi Mandliya
*/
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("ConversionService")
public class FeetToInchAndInchToFeetConversionService {
@GET
@Path("/InchToFeet/{i}")
@Produces(MediaType.TEXT_XML)
public String convertInchToFeet(@PathParam("i") int i) {
int inch=i;
double feet = 0;
feet =(double) inch/12;
return "<InchToFeetService>"
+ "<Inch>" + inch + "</Inch>"
+ "<Feet>" + feet + "</Feet>"
+ "</InchToFeetService>";
}
@Path("/FeetToInch/{f}")
@GET
@Produces(MediaType.TEXT_XML)
public String convertFeetToInch(@PathParam("f") int f) {
int inch=0;
int feet = f;
inch = 12*feet;
return "<FeetToInchService>"
+ "<Feet>" + feet + "</Feet>"
+ "<Inch>" + inch + "</Inch>"
+ "</FeetToInchService>";
}
}
@path(/your_path_at_class_level):将路径设置为基本URL +/your_path_at_class_Level。
基本URL基于应用程序名称,servlet和web.xml"配置文件的URL模式。
@path(/your_path_at_method_level):将路径设置为base url +/your_path_at_class_level +/your_path_at_method_level
@Produces(Mediatype.text_xml [,more-types]):@produces定义了用@get注释的方法传递的mime类型。
在示例文本中,生成了"text/xml")。
@PathParam:用于将来自URL的值注入方法参数。
此方法在ConvertFeetToinch方法中注入英寸并将其转换为脚。
6)现在我们需要创建Web.xml并将其放在/RESTFULWBServiceExample/WebContent/Web-Inf /
<!--?xml version="1.0" encoding="UTF-8"?-->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>RESTfulWebServiceExample</display-name>
<servlet>
<servlet-name>Jersey REST 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>org.igi.javapostsforlearning.webservices</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
在上面,请放置Web服务包。
8)运行项目:右键单击项目 - >运行AS - >在服务器上运行
9)测试休息服务下:"http://localhost:8080/restfulwebserviceexample/rest/conversionservice/feettoinch/2"。
我们将获得输出:
如果我们看到Web服务信息页面然后完成。
创建RESTFUL Web服务客户端:
在org.igi.javapostssforlearning.websevices.client下创建ConversionserviceClient.java.java.websevices.Client
package org.igi.javapostsforlearning.webservices.client;
import javax.ws.rs.core.MediaType;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.config.ClientConfig;
import com.sun.jersey.api.client.config.DefaultClientConfig;
public class ConversionServiceClient {
static final String REST_URI = "http://localhost:8080/RESTfulWebServiceExample";
static final String INCH_TO_FEET = "/ConversionService/InchToFeet/";
static final String FEET_TO_INCH = "/ConversionService/FeetToInch/";
public static void main(String[] args) {
int inch=12;
int feet=2;
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(REST_URI);
WebResource addService = service.path("rest").path(INCH_TO_FEET+inch);
System.out.println("INCH_TO_FEET Response: " + getResponse(addService));
System.out.println("INCH_TO_FEET Output as XML: " + getOutputAsXML(addService));
System.out.println("---------------------------------------------------");
WebResource subService = service.path("rest").path(FEET_TO_INCH+feet);
System.out.println("FEET_TO_INCH Response: " + getResponse(subService));
System.out.println("FEET_TO_INCH Output as XML: " + getOutputAsXML(subService));
System.out.println("---------------------------------------------------");
}
private static String getResponse(WebResource service) {
return service.accept(MediaType.TEXT_XML).get(ClientResponse.class).toString();
}
private static String getOutputAsXML(WebResource service) {
return service.accept(MediaType.TEXT_XML).get(String.class);
}
}
运行上面的程序输出:
INCH_TO_FEET Response: GET http://localhost:8080/RESTfulWebServiceExample/rest/ConversionService/InchToFeet/12 returned a response status of 200 OK INCH_TO_FEET Output as XML: 121.0 -------------------------------------------------- FEET_TO_INCH Response: GET http://localhost:8080/RESTfulWebServiceExample/rest/ConversionService/FeetToInch/2 returned a response status of 200 OK FEET_TO_INCH Output as XML: 224 --------------------------------------------------

