定义:REST就是一种编程风格,它能够精肯定位网上资源(服务接口、方法、参数)java
REST支持数据格式:XML、JSON数据库
REST支持发送方式:GET,POSTapache
由于SOAP并不假定传输数据的下层协议,所以必须设计为能在各类协议上运行。即便绝大多数SOAP是运行在HTTP上,使用URI标识服务,SOAP也仅仅使用POST方法发送请求,用一个惟一的URI标识服务的入口。举一个图书馆在线查询管理系统为例,服务提供者必须为每一本书提供一个内部标识,而后可能定义一个listBooks操做来返回一系列图书,一个getBook操做来返回指定的图书,一个createBook操做来向数据库加入新增的图书,一个deleteBook操做来删除做废的图书,每一个操做都有各自的参数,尤为是用内部标识来标识操做的图书。这种设计被诟病之处,在于deleteBook操做也要用POST方法来发送,而其实HTTP协议有更和逻辑的DELETE方法可用。REST正是这样设计的,REST为每个资源(此处是图书)指定一个惟一的URI,而用HTTP的4种方法GET、POST、PUT、DELETE直观地表示获取、建立、更新和删除图书。同时图书集合也是和单本的图书不一样的资源,若是用/books来表明图书列表,/books/ID来表明标识为ID的图书,那么对/books的GET操做就表明返回整个图书列表,对/books/ID的DELETE操做表明删除指定的图书,等等。编程
发布一个服务能够用于查询一个学生和多个学生ide
步骤 测试
1.导入jar包this
2.建立学生的pojo类,这里设置两个字段spa
package com.liaobei.pojo; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class Student { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
注意:在pojo类中加入@XmlRootElement 注释,不然会报错设计
该注释的做用是把java对象转换为xml格式code
3.建立SEI接口
import java.util.List; import javax.jws.WebService; 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; import com.liaobei.pojo.Student; @WebService @Path("/student") public interface StudentInterface { @GET//指定请求方式,若是服务端发布的时候指定的是GET(POST),那么客户端访问时必须使用GET(POST) @Produces(MediaType.APPLICATION_XML)//指定服务数据类型 @Path("/query/{name}")//@Path("/query/{id}")就是将“/query”映射到方法上,“{id}”映射到参数上,多个参数,以“/”隔开,放到“{}”中 public Student queryStudent(@PathParam("name")String name); @GET @Produces(MediaType.APPLICATION_XML) @Path("/queryList/{name}") public List<Student> querySomeStudent(@PathParam("name")String name); }
4.建立SEI的实现类
import java.util.ArrayList; import java.util.List; import com.liaobei.pojo.Student; public class StudentInterfaceImpl implements StudentInterface { public Student queryStudent(String name) { Student s= new Student(); s.setId(1); s.setName("1"); return s; } public List<Student> querySomeStudent(String name) { Student s= new Student(); s.setId(1); s.setName("1"); Student s1= new Student(); s1.setId(2); s1.setName("2"); List<Student> li = new ArrayList<Student>(); li.add(s); li.add(s1); return li; } }
5.发布服务
import org.apache.cxf.jaxrs.JAXRSServerFactoryBean; public class StudentServer { public static void main(String[] args) { JAXRSServerFactoryBean bean = new JAXRSServerFactoryBean(); bean.setServiceBean(new StudentInterfaceImpl()); bean.setAddress("http://127.0.0.1:12345/user"); bean.setResourceClasses(StudentInterfaceImpl.class); bean.create(); } }
6.测试服务
输入http://127.0.0.1:12345/user/student/query/1 后若结果以下所示则发布成功