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 --------------------------------------------------