开发一个REST Web服务

开发REST web服务来扩大您的web应用程序。在本教程的示例中,您将创建一个简单的web服务维护客户的列表。你将学习:

  • 开发一个REST web服务
  • 部署到Tomcat服务
  • 测试与其他Web Services Explorer

这个功能是可用的MyEclipse

1。首先一个REST Web服务项目

其余Web服务项目向导让你开始你的项目配置。

  1. 选择File > New > Web服务项目。
  2. 类型restdemo在项目名称字段中,选择jax - rs (REST Web服务)框架选项,并单击Next。

    newwsproject
    创建一个Web服务项目
  3. 接受默认的源文件夹,然后单击Next。
  4. 单击Finish接受违约这个例子的目的。
    newwsprojectfinish
    完成这个项目

2。创建一个新的REST Web服务

有了您的项目,您可以创建您的web服务。您将创建类的必要管理客户实体和类资源的方法。

2.1创建Customer实体

这个简单的客户类包含id、名称和地址字段和代表客户实体管理与web服务。

  1. 右键单击restdemo项目,并选择New > Class。
  2. 类型com.myeclipseide.ws在包装领域,类型客户在Name字段中,清楚的公共静态孔隙主要复选框是否被选中,然后单击Finish。

    wsnewclass
    创建一个Java类
  3. 生成的类的默认内容替换为下面的代码,并保存文件。
    包com.myeclipseide.ws;进口javax.xml.bind.annotation.XmlRootElement;@XmlRootElement公共类客户{私人int id;私人字符串名称;私人字符串地址;公共int getId(){返回id;}公共空setId (int id) {。id = id;getName(){}公共字符串返回名称;}公共空setName(字符串名称){this.name =名称;公共字符串getAddress(){}返回地址; } public void setAddress(String address) { this.address = address; } }

    您使用XML序列化格式,如您发送和接收客户实体从web服务使用XML。

    Customer类的@XMLRootElement注释是一个JAXB注释,允许JAXB将这个实体从Java到XML和背部。可以注释类中的字段和方法自定义序列化,但是对于本教程,JAXB违约罚款。

2.2创建资源类,Web服务的核心

  1. 右键单击restdemo项目,并选择New >。
  2. 类型web服务在过滤领域,选择Web服务,然后单击Next。

    wsnewwsmenu
    创建新的web服务
  3. 选择从Java类创建web服务选项,选择创建新的Java bean复选框,并单击Next。

    wsnewws
    创建新的web服务
  4. 类型客户在URL路径字段,选择单周期选项,选择应用程序/ xml从产生下拉,类型com.myeclipseide.ws在Java包字段,类型CustomersResource在Java类字段中。

    wsnewwsconfig
    Web服务配置细节

    URL路径表明该资源的路径可以到达。在本教程中,您将使用客户因为这个资源管理我们的客户列表。资源将被托管在“/客户”。
    单例对象生命周期确保只有一个这个类的实例是由泽每一点。
    消费和生产可以被用来指定默认的mime类型(s)的数据这个资源可以接受并生成。这些值可以被单独的类中的方法。正如上面提到的,你是序列化为XML,所以你使用application / XML mime类型。
  5. 单击Add按钮添加的方法获取客户的列表。
  6. 类型getcustomer在名称字段的方法,并不知道<客户>在返回类型字段,然后单击Finish。

    wsnewmethod
    添加一个方法

    HTTP方法可以被用来指定HTTP请求该方法响应的类型,在本例中。
    方法签名预览更新修改页面,给你一个想法的生成方法。
  7. 再次单击Add按钮添加一个方法,它返回一个特定客户的详细信息。
  8. 类型getCustomer在名称字段的方法,客户在返回类型字段{id}在URL路径字段中。

    wsnewmethod2get
    添加第二个方法
  9. 单击Add按钮添加一个方法参数。类型int在Java类型字段,cId在Java名称字段中,选择PathParam参数类型下拉,和类型id参数名称字段。单击Finish。

    wsnewmethodparameters
    添加方法参数

    URL路径指定的路径,这种方法可以达到,相对于包含的资源。
    在本例中,您指定{id},这意味着这个资源方法可以达到/客户/ {id}。大括号表示URI变量。这些变量是在运行时替换为一个资源应对基于替换URI的请求。
    参数在表中直接编辑的参数。因为你需要id变量的值,您可以使用PathParam注释将它映射到cId战斗识别参数。
  10. 添加一个方法,允许您添加一个新的客户名单。填写的字段,如下所示,并单击Finish。

    wsnewmethod3
    创建addCustomer方法

    在这种情况下,你对一个POST请求并期望应用程序/ xml输入,这将被反序列化到客户参数。客户的参数是一个实体参数映射(未经)和直接从传入的请求消息体。你也覆盖默认的应用程序/ CustomersResource类和指定的xml输出指定text / html。

    添加这三个方法之后,配置应该是这样的:

    wsfinalwsconfig
    最终的web服务配置
  11. 单击Finish来生成CustomersResource类。打开文件看到的资源的方法。

3所示。提供您生成的实现方法

现在,您需要提供您使用向导创建的实现方法。在真实的应用程序中,在这一点上你可能线在数据库中使用JPA或Hibernate来帮助管理客户列表,但一个简单的内存映射是足够的对于本教程。

实现简单;当客户收到的是服务,你给实体counter-based id,并将它添加到地图。从这张地图检索客户id和提供一个客户列表如下直接可以看到。

CustomersResource类中的内容替换为以下代码。观察到的类和方法签名没有改变。你是充实的实现服务生成的存根。你也添加一个客户列表用于演示目的。

包com.myeclipseide.ws;进口java.util.ArrayList;进口并不知道;进口java.util.TreeMap;进口javax.ws.rs.Consumes;进口javax.ws.rs.GET;进口javax.ws.rs.POST;进口javax.ws.rs.Path;进口javax.ws.rs.PathParam;进口javax.ws.rs.Produces; import com.sun.jersey.spi.resource.Singleton; @Produces("application/xml") @Path("customers") @Singleton public class CustomersResource { private TreeMap customerMap = new TreeMap(); public CustomersResource() { // hardcode a single customer into the database for demonstration // purposes Customer customer = new Customer(); customer.setName("Harold Abernathy"); customer.setAddress("Sheffield, UK"); addCustomer(customer); } @GET public List getCustomers() { List customers = new ArrayList(); customers.addAll(customerMap.values()); return customers; } @GET @Path("{id}") public Customer getCustomer(@PathParam("id") int cId) { return customerMap.get(cId); } @POST @Path("add") @Produces("text/plain") @Consumes("application/xml") public String addCustomer(Customer customer) { int id = customerMap.size(); customer.setId(id); customerMap.put(id, customer); return "Customer " + customer.getName() + " added with Id " + id; } }

4所示。部署Web服务应用程序

部署web服务的最快的方法是使用运行或调试如MyEclipse服务器应用程序行为。

  1. 右键单击该项目,并选择Debug > MyEclipse服务器应用程序(或运行)。
  2. 选择MyEclipse Tomcat,并单击Finish。


    选择一个服务器进行部署

MyEclipse执行以下步骤:

  • 包Web服务项目和部署爆炸格式的应用程序服务器
  • 启动应用服务器和加载项目

MyEclipse Web浏览器打开默认index . jsp我们的Web服务应用程序的页面。你不需要这个,因为你没有测试一个web页面,你可以关闭这一观点。

5。测试与其他Web Services Explorer

其余Web Services Explorer MyEclipse标准订阅级别不可用。如果你是一个MyEclipse标准的用户,按照说明测试Web服务使用一个标准的浏览器

  1. 右键单击restdemo项目,并选择与REST Web服务工具>测试Web Services Explorer更新于2017年MyEclipse这个菜单选项。之前的版本,点击这里

    注意:如果你部署restdemo MyEclipse Tomcat以外的应用程序服务器,explorer中使用WADL URL可能包含不正确的端口,阻止浏览器加载WADL文件。正确的港口,并单击Go按钮继续。

    你也可以打开REST Web服务浏览器通过单击下拉箭头上的Web Services Explorer图标在工具栏,选择启动REST Web服务浏览器。在这种情况下,您必须输入WADL文件的路径在地址栏之后再继续。

  2. 扩展的树{id}节点,并选择getCustomer方法。

    wstestmethod
    选择测试方法
  3. 点击测试方法。将打开一个新标签,您可以输入信息和运行测试。

    wstestmethodgetcustomer
    getCustomer选项卡用于测试方法
  4. 类型0id字段,单击运行测试图标

    wstestmethodrun
    检索列表中的一个客户
  5. 关闭getCustomer选项卡。
  6. 扩大添加在树中,选择addCustomer方法,并单击测试方法
  7. 在人体内,类型application / xml的addCustomer选项卡,粘贴下面的代码,然后单击
    比尔·阿达玛<客户> <名称> < /名称> <地址>温哥华,加拿大< /地址> < /客户>
    响应确认,客户账单阿达玛添加Id1。

    wstestmethodadd
    测试添加函数
  8. 关闭addCustomer选项卡。
  9. 选择getcustomer客户节点,然后单击测试方法
  10. 点击。两个客户列表中的服务返回的XML。

    wsgetcustlist
    检索整个客户名单

6。资源

Baidu
map