RESTFUL接口开发

来源:互联网 发布:淘宝直播抢红包神器 编辑:程序博客网 时间:2024/06/06 03:19
1、需要导入的包
  <!-- CXF START -->
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-frontend-jaxws</artifactId>
   <version>${cxf.version}</version>
  </dependency>
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-transports-http</artifactId>
   <version>${cxf.version}</version>
  </dependency>
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-frontend-jaxrs</artifactId>
   <version>${cxf.version}</version>
  </dependency>
  <dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-rt-transports-http-jetty</artifactId>
   <version>${cxf.version}</version>
   <exclusions>
    <exclusion>
     <artifactId>geronimo-servlet_2.5_spec</artifactId>
     <groupId>org.apache.geronimo.specs</groupId>
    </exclusion>
   </exclusions>
  </dependency>
  <!-- CXF END -->

  <dependency>
   <groupId>javax.ws.rs</groupId>
   <artifactId>javax.ws.rs-api</artifactId>
   <version>2.0</version>
  </dependency>
 
  <dependency>
   <groupId>org.codehaus.jettison</groupId>
   <artifactId>com.springsource.org.codehaus.jettison</artifactId>
   <version>1.0.1</version>
  </dependency>

2、编写接口和实现类

package com.demo.inter.rest;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name = "User")  public class User {private String id;private String name;public User() {super();}public User(String id, String name) {this.id = id;this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}}

package com.demo.inter.rest;import java.util.List;import javax.ws.rs.*;import javax.ws.rs.core.MediaType;public interface IRest_HelloWorld {@GET@Produces(MediaType.TEXT_PLAIN)@Path("/say/{name}")public String say(@PathParam("name") String name);@GET@Produces(MediaType.TEXT_PLAIN)@Path("/sayHello/{name}")public String sayHello(@PathParam("user") User user);@GET@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })@Path("/getList/{id}")public List<User> getList(@PathParam("id") String id);}

package com.demo.inter.rest;import java.util.ArrayList;import java.util.List;import org.springframework.stereotype.Service;@Service("rest_HelloWorldImpl")  public class Rest_HelloWorldImpl implements IRest_HelloWorld {        public String say(String name) {              return name+",您好!";      }        public String sayHello(User user) {          return user.getName()+",您好!";      }            public List<User> getList(String id){          List<User> list = new ArrayList<User>();                    String sid="1L";          User user = new User(sid,"张三"+sid);          list.add(user);                    sid="2L";          user = new User(sid,"张三"+sid);          list.add(user);                    sid= "3L";          user = new User(sid,"张三"+sid);          list.add(user);          return list;      }}  


3、修改spring配置文件
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:jaxrs="http://cxf.apache.org/jaxrs" 
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">
上面粗体的为需要添加的内容

<!--导入cxf需要配置文件-->
 <import resource="classpath:META-INF/cxf/cxf.xml" />
 <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
 <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<!--发布接口-->
 <bean id="Rest_HelloWorldImpl" class="com.demo.inter.rest.Rest_HelloWorldImpl" />
 <!-- 这里的地址很重要,客户端需要通过这个地址来访问WebService -->
 <jaxrs:server id="restServiceContainer" address="/rest">
  <jaxrs:serviceBeans>
   <ref bean="Rest_HelloWorldImpl" />
  </jaxrs:serviceBeans>
  <jaxrs:extensionMappings>
   <entry key="json" value="application/json" />
   <entry key="xml" value="application/xml" />
  </jaxrs:extensionMappings>
  <jaxrs:languageMappings>
   <entry key="en" value="utf-8" />
  </jaxrs:languageMappings>
 </jaxrs:server>


4、测试
http://localhost:8080/MyTools/webservice/rest/say/111







0 0