RESTful Web服务是基于REST架构的Web服务。在REST架构一切都是一种资源。 RESTful Web服务是轻量级的,高度可扩展性和可维护性,并且非常常用于创建基于API的Web应用程序。

REST是什么 ?

REST表示代表性状态传输。REST是一种基于Web标准的架构,并使用HTTP协议进行数据通信。它围绕着资源,其中每一个组件是资源和一个资源是由一个共同的接口,使用HTTP的标准方法获得。REST最初是由Roy Fielding在2000年推出。

在REST架构中,REST服务器只是提供的资源以及在REST客户端访问时提供资源。这里每个资源由URI标识/全局标识。REST采用各种申述表示类似文本,JSON和XML资源。现在JSON是Web服务所使用的最流行的格式。

HTTP 方法

下列著名的HTTP方法是常用于基于REST的架构。

  • GET - 提供的资源的只读访问。

  • PUT - 用于创建一个新的资源。

  • DELETE - 用于删除资源。

  • POST - 用于更新现有资源或创建新的资源。

  • OPTIONS - 用于得到支持的操作上的资源。

RESTful Web服务

Web服务是用于交换应用程序或系统之间的数据开放的协议和标准的集合。编写各种编程语言和运行在不同平台上的软件应用程序可以使用Web服务来以类似于进程间通信在单台计算机上的方式通过计算机网络进行交换数据,如因特网。 这份互联特性(如Java和Python,或Windows和Linux应用程序之间),是由于使用开放标准。

基于REST架构的Web服务称为RESTful web服务。这些Web服务使用HTTP方法来实现REST架构的概念。RESTful Web服务通常定义URI,统一资源标识符的服务,提供资源的表示,如JSON,并设置HTTP方法。

创建RESTful Web服务

本教程将创建一个Web服务使用以下用户管理功能:

Sr. No. HTTP 方法 URI 操作 操作类型
1 GET /UserService/users 获取用户列表 只读
2 GET /UserService/users/1 读取用户ID为1用户信息 只读
3 PUT /UserService/users/2 插入Id为2的用户信息 等幂
4 POST /UserService/users/2 更新Id为2的用户信息 N/A
5 DELETE /UserService/users/1 删除Id为1的用户信息 等幂
6 OPTIONS /UserService/users 列出Web服务支持的操作 只读

让我们使用Jersey框架开始编写实际的RESTful web服务。 在开始使用Jersey框架编写第一个例子,必须确保设置环境REST Web服务正常。我也假设你有一点点的使用Eclipse IDE工作的经验。

因此,让我们继续编写一个简单的应用程序Jersey将公开一个Web服务方法来显示用户列表。

第1步 - 创建Java项目:

第一步是创建使用Eclipse IDE动态Web项目。按照选项 File -> New -> Project 并最后选择 Dynamic Web Project 从向导列表向导。现在使用的向导窗口如下项目命名为UserManagement:

一旦项目成功创建,目录结构在 Project Explorer:

第2步 - 添加必需的库:

第二步,让我们在项目中添加Jersey框架和它的依赖(库)。复制所有jar文件在下载ZIP的jersey文件夹的目录下面的所有文件到项目的WEB-INF/ lib目录下。

  • \jaxrs-ri-2.17\jaxrs-ri\api

  • \jaxrs-ri-2.17\jaxrs-ri\ext

  • \jaxrs-ri-2.17\jaxrs-ri\lib

现在,右键点击你的项目名称用户管理,然后按照下面选项中的上下文菜单: Build Path -> Configure Build Path 显示Java构建路径窗口。

现在,使用添加JAR文件可用按钮下的库选项卡,添加JAR文件到WEB-INF/lib目录下。

第3步 - 创建源文件:

现在,让我们在UserManagement 项目中创建实际的源文件。首先,我们需要创建一个名为包 com.yiibai. 要做到这一点,右键单击src在包资源管理部分并按照选项: New -> Package.

下一步,我们将创建 User.java, UserDao.java, 和 UserService.java 文件在 com.yiibai 包下.

File - User.java

package com.yiibai;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "user")
public class User implements Serializable { private static final long serialVersionUID = 1L;
private int id;
private String name;
private String profession; public User(){} public User(int id, String name, String profession){
this.id = id;
this.name = name;
this.profession = profession;
} public int getId() {
return id;
} @XmlElement
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public String getProfession() {
return profession;
}
@XmlElement
public void setProfession(String profession) {
this.profession = profession;
}
}

File - UserDao.java

下面的程序已经被硬编码为显示列出来的用户的功能。在这里,可以实现所需的业务逻辑,你可能读取用户,或从数据库及任何其他资源所需的数据。

package com.yiibai;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List; public class UserDao {
public List<User> getAllUsers(){
List<User> userList = null;
try {
File file = new File("Users.dat");
if (!file.exists()) {
User user = new User(1, "Mahesh", "Teacher");
userList = new ArrayList<User>();
userList.add(user);
saveUserList(userList);
}
else{
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
userList = (List<User>) ois.readObject();
ois.close();
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return userList;
}
}

File - UserService.java

package com.yiibai;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; @Path("/UserService")
public class UserService { UserDao userDao = new UserDao(); @GET
@Path("/users")
@Produces(MediaType.APPLICATION_XML)
public List<User> getUsers(){
return userDao.getAllUsers();
}
}

有以下两个要点需要注意下面的主程序,UserService.java:

  1. 第一步是指定用于使用@Path注释到UserService的Web服务的路径。

  2. 第二个步骤是,以指定用于使用@Path注释到UserService的方法的特定web服务方法的路径。

第4步 - 创建web.xml配置文件:

需要创建一个Web XML配置文件,该文件是一个XML文件,用于指定Jersey框架的servlet应用。

File - web.xml

<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>User Management</display-name>
<servlet>
<servlet-name>Jersey RESTful Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.yiibai</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey RESTful Application</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>

第5步 - 部署程序

一旦你使用创建源和Web配置文件完成,这一步是准备好编译和运行程序。要做到这一点,使用Eclipse,导出您的应用程序为war文件,并部署在Tomcat中。 要使用eclipse创建WAR文件,按照选项 File -> export -> Web > War File 最后选择项目UserManagement和目标文件夹。 要在Tomcat部署WAR文件,将用户Management.war在Tomcat的安装目录 > webapps 目录并启动Tomcat。

第6步 - 运行程序

我们使用Postman,一个Chrome扩展来测试Web服务。

提出一个请求到UserManagement,让所有的用户列表。http://localhost:8080/UserManagement/rest/UserService/users POSTMAN使用GET请求,看看下面的结果。

恭喜你,已经创建了第一个基于REST的应用成功。此外,让我们开始做一些更有趣事情在接下来的几章。

RESTful记录-RESTful介绍的更多相关文章

  1. RESTful记录-RESTful服务

    按照REST架构,一个RESTful Web服务不应该继续服务器的客户端的状态.这种限制被称为无状态.它负责客户以它的上下文传递给服务器,然后服务器可以存储这样的上下文,以处理客户端的进一步请求.例如 ...

  2. RESTful记录-RESTful内容

    什么是资源? REST架构对待每一个内容都作为一种资源.这些资源可以是文本文件,HTML网页,图片,视频或动态业务数据. REST服务器只是提供资源,REST客户端可访问和修改的资源.这里每个资源由U ...

  3. spring3 的restful API RequestMapping介绍

    原文链接:http://www.javaarch.net/jiagoushi/694.htm spring3 的restful API RequestMapping介绍 在spring mvc中 @R ...

  4. RESTful 架构 && RESTful API

    RESTful 架构 && RESTful API REpresentational State Transfer (REST) 具象状态传输https://en.wikipedia. ...

  5. 理解RESTful架构——Restful API设计指南

    理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...

  6. Restful 和 Jersey介绍(Web Service )

    一:REST简单介绍 REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(reso ...

  7. RESTful 开发风格介绍

    REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统.在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple ...

  8. rest规范 ; restful 风格; gradel介绍 ; idea安装 ;

    [说明]上午整理了一下心情:下午继续开始任务,了解了restful,知道了那个牛人的博士论文,下载了管理工具gradle,并且部署了环境:晚上安装了idea继承环境并且建了一个简单的gradle项目( ...

  9. OpenStack Restful API框架介绍

    1  pecan框架介绍 1.1  什么是pecan pecan是一个轻量级的python web框架,最主要的特点是提供了简单的配置即可创建一个wsgi对象并提供了基于对象的路由方式. 主要提供的功 ...

随机推荐

  1. java写个自己的mvc框架学习笔记

    1. 介绍 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的 ...

  2. dubbo见解

    调用关系说明 服务容器负责启动,加载,运行服务提供者. 服务提供者在启动时,向注册中心注册自己提供的服务. 服务消费者在启动时,向注册中心订阅自己所需的服务. 注册中心返回服务提供者地址列表给消费者, ...

  3. 通过Heketi管理GlusterFS为K8S集群提供持久化存储

    参考文档: Github project:https://github.com/heketi/heketi MANAGING VOLUMES USING HEKETI:https://access.r ...

  4. Appium+Python3+ Android入门

    前言: Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用. 一.环境配置 1.安装Node.js https://nodejs.o ...

  5. Alpha版本发布时间安排

    Alpha版本发布截止时间:2014年11月23日 第一轮迭代M1报告时间:2014年11月27日课上 - 每个团队5分钟时间汇报,5分钟时间提问 第一轮迭代M1事后分析报告时间:2014年11月29 ...

  6. Linux内核分析——第一周学习笔记20135308

    第一周 计算机是如何工作的 第一节 存储程序计算机工作模型 1.冯·诺依曼结构模型:冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.程序指令存储地址和数据存储 ...

  7. SSM 框架快速整合实例--学生查询

    一.快速准备 SSM 框架即 Spring 框架.SpringMVC 框架.MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了.对于这 3 个框架还不熟悉 ...

  8. HDU 2030 汉字统计

    http://acm.hdu.edu.cn/showproblem.php?pid=2030 Problem Description 统计给定文本文件中汉字的个数.   Input 输入文件首先包含一 ...

  9. [转帖]Oracle 11G RAC For Windows 2008 R2部署手册

    Oracle 11G RAC For Windows 2008 R2部署手册(亲测,成功实施多次) https://www.cnblogs.com/yhfssp/p/7821593.html 总体规划 ...

  10. 关于“代码规范”,“Review”和“Check list”(续)

    在前两天的    关于“代码规范”,“Review”和“Check list”    一文中,我给自己列出了Check list,如下: 1.代码能够工作么?它有没有实现预期的功能,逻辑是否正确等. ...