REST服务和RESTful API是什么

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shangrila_kun/article/details/89026968
  • 什么是REST

REST,即Representational State Transfer的缩写,中文是"表现层状态转化"。
它是一种互联网应用程序的API设计理念:可以用URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作来解释什么是REST。
其实全称是 Resource Representational State Transfer:通俗来讲就是:资源在网络中以某种表现形式进行状态转移。(再通俗来说,就是通过HTTP请求服务器上的某资源,使该资源copy了一份到服务请求方那去了(get动作)。个人这么理解)
我们分解开来进行解释:

  1. Resource:资源,即数据它可以是一段文本、一张图片、一首歌曲等;
  2. Representational:某种表现形式,比如用JSON,XML,JPEG等;HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现形式"的描述。
  3. State Transfer:状态变化。通过HTTP动词实现。

注:互联网通信协议HTTP协议,是一个无状态协议。**这意味着,所有的状态都保存在服务器端。**因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

  • REST是由谁提出来的

Roy Thomes Fielding在他2000年的博士论文中提出REST架构模式,他是HTTP协议(v1.0和v1.1)的主要设计者、Apache服务器作者之一、Apache基金会第一任主席。

  • 什么是REST ful API

基于REST构建的API就是Restful风格。

  • 为什么产生了这种架构模式

传统的那种JSP前后端耦合在一起的网页模式我们称之为“上古时期”网页,这种模式弊端很多。可以访问这篇文章进行了解,
"上古时期”的Web编程模式到现代化的康庄大道
,就不在这里细细展开了。

近年来,随着移动技术的发展,各种移动端设备层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。另外对于广大平台来说,比如新浪微博开放平台,微信公共平台等,它们不需要有显式的前端,只需要一套提供服务的接口,于是RESTful更是它们最好的选择。

restful api
举个例子说明

例如,我们正在做一套农产品溯源查询系统,客户需要在PC端可以访问,APP端可以访问,小程序端可以访问。例如我们已有追溯码,分别在这三个平台查询该追溯码的真伪,传统的方式,需要写三个接口了,采用restful api,我们只需要写一个接口即可,三处平台各自调用即可,接口返回的数据各自可以按各自的需要进行渲染。

  • REST的设计原则
  1. 网络上的所有事物都被抽象为资源
  2. 每个资源都有一个唯一的资源标识符
  3. 同一个资源具有多种表现形式(xml,json等)
  4. 对资源的各种操作不会改变资源标识符
  5. 所有的操作都是无状态的
  • REST ful API之前的接口设计

在Restful之前的操作:
http://www.haoeasy.cn/user/query/1 GET 根据用户id查询用户数据
http://www.haoeasy.cn/user/save POST 新增用户
http://www.haoeasy.cn/user/update POST 修改用户信息
http://www.haoeasy.cn/user/delete GET/POST 删除用户信息

  • RESTful用法:

http://www.haoeasy.cn/user/1 GET 根据用户id查询用户数据
http://www.haoeasy.cn/user POST 新增用户
http://www.haoeasy.cn/user PUT 修改用户信息
http://www.haoeasy.cn/user DELETE 删除用户信息

  • 如何设计规范的REST ful API接口

参考:
RESETful API 设计规范
RESTful API 最佳实践

扫描二维码关注公众号,回复: 5797091 查看本文章

猜你喜欢

转载自blog.csdn.net/shangrila_kun/article/details/89026968