本文转载于:https://www.jianshu.com/p/75389ea9a90b

一、rest api 是前后端分离最佳实践,是开发的一套标准或者说是一套规范,不是框架。

好处:

  1. 轻量,直接通过 http,不需要额外的协议,通常有post/get/put/deletet操作;
  2. 面向资源,一目了然,具有自解释性;
  3. 数据描述简单,一般通过 json 或者 xml 做数据通讯 rest 的概括。

二、REST全称

Representational State Transfer 的缩写。对这个词组的翻译是“表现层状态转化”。


三、资源(Resources)

REST 的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"。

所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个 URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此 URI 就成了每一个资源的地址或独一无二的识别符。

所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。


四、表现层(Representation)

“资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层”(Representation)。

比如,文本可以用txt格式表现,也可以用 HTML 格式、XML 格式、JSON格式表现,甚至可以采用二进制格式;图片可以用 JPG 格式表现,也可以用 PNG 格式表现。

URI 只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。


五、状态转化(State Transfer)

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。

客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。


六、综述

综合上面的解释,我们总结一下什么是 RESTful 架构:

  1. 每一个URI代表一种资源;

  2. 客户端和服务器之间,传递这种资源的某种表现层;

  3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

REST API简介相关推荐

  1. 线程编程常见API简介(中)

    2019独角兽企业重金招聘Python工程师标准>>> 一.概述 在<线程编程常见API简介(上) >中讲述了有关线程创建过程中常用的 API 的使用方法,本节继续讲述有 ...

  2. WebSocket API简介

    WebSocket是html5新增加的一种通信协议,目前流行的浏览器都支持这个协议,例如Chrome,Safari,Firefox,Opera,IE等等,对该协议支持最早的应该是chrome,从chr ...

  3. web API简介(二):客户端储存之document.cookie API

    概述 前篇:web API简介(一):API,Ajax和Fetch 客户端储存从某一方面来说和动态网站差不多.动态网站是用服务端来储存数据,而客户端储存是用客户端来储存数据.document.cook ...

  4. 【Netty】NIO 网络通信 SelectionKey 常用 API 简介

    文章目录 I . SelectionKey 简介 II . SelectionKey 事件简介 III . SelectionKey 常用 API 简介 I . SelectionKey 简介 1 . ...

  5. 【Java 网络编程】TCP API 简介 ( Socket | ServerSocket )

    文章目录 I Socket API 简介 II ServerSocket API 简介 III Socket 数据交互 IV Socket 客户端操作流程 V Socket 服务器端操作流程 VI S ...

  6. java编译器使用教程_Java编译器API简介

    今天给大家分享的是Java编译器API简介,文章部分内容摘自[优锐课]学习笔记. Java编译器API Java编译器API是Java模块(称为java.compiler)的一部分.该模块包括语言模型 ...

  7. html5画电池状态,HTML5的一个显示电池状态的API简介

    这篇文章主要介绍了HTML5的一个显示电池状态的API简介,由Mozilla设计,具体的设备和浏览器支持情况还要通过检测才能确定,需要的朋友可以参考下 移动设备的份额在网络流量中在大量增长,其所贡献的 ...

  8. ZABBIX API简介及使用

    API简介 Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时.很难想象管理数千台服务器而没有自动化是多么的困难.Zabbix API为批量操作.第三方软件集成以 ...

  9. Promise API 简介

    Promise API 简介 译者注: 到处是回调函数,代码非常臃肿难看, Promise 主要用来解决这种编程方式, 将某些代码封装于内部. Promise 直译为"承诺",但一 ...

  10. 基于阿里云的API简介

    基于阿里云的API简介 API简介 如果您熟悉网络服务协议和一种以上编程语言,推荐您调用API管理您的云上资源和开发自己的应用程序. 使用说明 ECS API支持HTTP或者HTTPS网络请求协议,允 ...

最新文章

  1. 2022-2028年中国BOPP消光膜行业全景调研及竞争格局预测报告
  2. Java的几种常见接口用法
  3. mysql创建库几种方法_MySQL创建数据库的两种方法
  4. Mysql中分页查询两个方法比较
  5. java为什么打不开jar_带你上手阿里开源的 Java 诊断利器:Arthas
  6. Web/app端自动化测试对比
  7. rmmod 提示 No such file or directory
  8. locate: database too small: /var/db/locate.databas
  9. 【APICloud系列|21】使用APICloud敏捷式开发总结,回顾开发一个完整APP过程。
  10. 众辰nz200变频器使用说明书_一些电工听到变频器有点懵,今天我们一起来分析变频咋回事?...
  11. ~~双链表(数据结构)
  12. 自学python能做erp吗_erp系统可以自学吗?应该怎么学习?
  13. 温室大棚物联网系统方案
  14. yylabel 加载html,YYLabel 自动布局 富文本文字点击事件
  15. ipadpro画流程图_流程图制作软件,这款软件让你5分钟就能搞定流程图
  16. css样式的灵异事件
  17. 微信发放红包接口(java)
  18. OpenStack in containers
  19. 把QQ群共享当做网盘用感觉还不错
  20. 怎么调节PDF文件的尺寸大小?

热门文章

  1. Windows电脑垃圾清理 - 如何删除临时文件(Temp文件夹)
  2. window docker 找不到原先所有镜像和容器
  3. 学习编程的基础(学编程的基础要具备什么)
  4. python人工智能入门书籍推荐-了解、学习人工智能必看的十本书
  5. MFC 初始化D3D
  6. php还款功能,智能还款的原理
  7. 一道面试题:写出SQL语句实现下述功能
  8. mouseenter 与mouseover 区别
  9. ROS(七):移动机器人的导航和SLAM(一)
  10. 【量化】通过Fama-French三因子模型选股,收益能达到多少?