RESTful记录-RESTful介绍
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:
第一步是指定用于使用@Path注释到UserService的Web服务的路径。
第二个步骤是,以指定用于使用@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介绍的更多相关文章
- RESTful记录-RESTful服务
按照REST架构,一个RESTful Web服务不应该继续服务器的客户端的状态.这种限制被称为无状态.它负责客户以它的上下文传递给服务器,然后服务器可以存储这样的上下文,以处理客户端的进一步请求.例如 ...
- RESTful记录-RESTful内容
什么是资源? REST架构对待每一个内容都作为一种资源.这些资源可以是文本文件,HTML网页,图片,视频或动态业务数据. REST服务器只是提供资源,REST客户端可访问和修改的资源.这里每个资源由U ...
- spring3 的restful API RequestMapping介绍
原文链接:http://www.javaarch.net/jiagoushi/694.htm spring3 的restful API RequestMapping介绍 在spring mvc中 @R ...
- RESTful 架构 && RESTful API
RESTful 架构 && RESTful API REpresentational State Transfer (REST) 具象状态传输https://en.wikipedia. ...
- 理解RESTful架构——Restful API设计指南
理解RESTful架构 Restful API设计指南 理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式 ...
- Restful 和 Jersey介绍(Web Service )
一:REST简单介绍 REST 2000 年由 Roy Fielding 在博士论文中提出,他是 HTTP 规范 1.0 和 1.1 版的首席作者之中的一个. REST 中最重要的概念是资源(reso ...
- RESTful 开发风格介绍
REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统.在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple ...
- rest规范 ; restful 风格; gradel介绍 ; idea安装 ;
[说明]上午整理了一下心情:下午继续开始任务,了解了restful,知道了那个牛人的博士论文,下载了管理工具gradle,并且部署了环境:晚上安装了idea继承环境并且建了一个简单的gradle项目( ...
- OpenStack Restful API框架介绍
1 pecan框架介绍 1.1 什么是pecan pecan是一个轻量级的python web框架,最主要的特点是提供了简单的配置即可创建一个wsgi对象并提供了基于对象的路由方式. 主要提供的功 ...
随机推荐
- JQuery快速入门-简介
一.什么是JQuery? jQuery是一个JavaScript库,它通过封装原生的JavaScript函数得到一整套定义好的方法.它的作者是John Resig,于2006年创建的一个开源项目,随着 ...
- FME Cloud 账号申请流程
第一步,访问SAFE的FME Cloud注册页,官网明确表态,如果你是一个新的FME Cloud用户,你可以免费获得一个初级版.地址:https://console.fmecloud.safe.com ...
- 3.3V电源LDO
1:今天用到1颗3.3v的LDO,如图 输入输出都是3.3V,但是一个是做模拟电压,以后遇到这种情况可以这样使用. 2:二极管降压电路,1.8V转1.5V
- 《LINUX内核设计与实现》第三周读书笔记——第一二章
<Linux内核设计与实现>读书笔记--第一二章 20135301张忻 估算学习时间:共2小时 读书:1.5 代码:0 作业:0 博客:0.5 实际学习时间:共2.5小时 读书:2.0 代 ...
- UIO,大页内存,CPU亲和性,NUMA机制等
Linux环境下的UIO(Userspace I/O) UIO 用户空间下驱动程序的支持机制.DPDK使用UIO机制使网卡驱动程序运行在用户态,并采用轮询和零拷贝方式从网卡收取报文,提高收发报文的性能 ...
- DHCP介绍
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...
- Alpha冲刺第7天
Alpha第7天 1.团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504 陈顺兴 031602505 张胜男 031602540 廖钰萍 031602323 雷光游 03160 ...
- Linux下搭建testlink1.9.17
如果只是要搭建testlink服务的话,建议使用testlink的集成安装包,能避免很多坑 下载地址:https://bitnami.com/stack/testlink/installer 下载好后 ...
- mysql存储过程学习第一天
摘要:存储过程和函数是在数据库中定义一些SQL语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的SQL语句.存储过程和函数可以避免开发人员重复的编写相同的SQL语句.而且,存储过程和函数是在 ...
- 【大数据】Hive学习笔记
第1章 Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计. Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表, ...