一.REST起源

REST(Representational State Transfer)表象化状态转变(表述性状态转变),在2000年被提出,基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)。

1.什么是轻量级:

代码不被侵入(正例:SpringMVC中不用接口和继承,仅用注解完成。反例:Struts中每一个Action都要继承核心控制器),轻量级跟包大小无关。耦合性越低,越轻量。

二.REST架构的主要原则

  • 对网络上所有的资源都有一个资源标志符。

  • 对资源的操作不会改变标识符。

  • 同一资源有多种表现形式(xml、json)

  • 所有操作都是无状态的(Stateless)

符合上述REST原则的架构方式称为RESTful

1.URI和URL区别:

URI:http://example.com/users/

URL:http://example.com/users/{user} (one for each user)

2.什么是无状态性:

使得客户端和服务器端不必保存对方的详细信息,服务器只需要处理当前的请求,不需了解请求的历史。可以更容易的释放资源,让服务器利用Pool(连接池)技术来提高稳定性和性能。

三.RESTful介绍

RESTful是一种常见的REST应用,是遵循REST风格的web服务,REST式的web服务是一种ROA(面向资源的架构)。

1.RESTful资源操作

http方法 资源操作 幂等 安全
GET SELECT
POST INSERT
PUT UPDATE
DELETE DELETE

幂等性:对同一REST接口的多次访问,得到的资源状态是相同的。

安全性:对该REST接口访问,不会使服务器端资源的状态发生改变。

2.接口示例:

2.1.传统URL请求格式:

http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据

http://127.0.0.1/user/save POST 新增用户

http://127.0.0.1/user/update POST 修改用户信息

http://127.0.0.1/user/delete GET/POST 删除用户信息

2.2.RESTful请求格式:

http://127.0.0.1/user/1 GET 根据用户id查询用户数据

http://127.0.0.1/user POST 新增用户

http://127.0.0.1/user PUT 修改用户信息

http://127.0.0.1/user DELETE 删除用户信息

3.响应设计

原则:数据接收到即可使用,无需拆箱。

在一次请求中,content body仅仅用于传输数据。Header中存放描述请求或请求的元数据,例如 X-Result-Fields。

4.http响应状态码

根据http响应码,判断请求状态,进而做出提醒。

四.RESTful的使用


下面将用实际代码演示RESTful做增删改查的操作使用示例:

1.查询get:

查询测试:


2.新增post:

新增测试:

AJAX调用:

3.更新put:

Service写法:

更新测试:

默认情况下,PUT请求是无法提交表单数据的,在Spring MVC项目中需要在web.xml中添加过滤器解决:

  <!-- 解决PUT请求无法提交表单数据的问题 --><filter><filter-name>HttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class></filter><filter-mapping><filter-name>HttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

4.删除delete:

删除测试:

五.结语

至此,RESTful的介绍和使用已经完成,RESTful已在各互联网公司接口定义中,成为主流的范式,RESTful减少了传统请求的拆装箱操作,结构清晰,在接口定义中受到前后端开发者的青睐。

RESTful介绍和使用教程相关推荐

  1. 相机无线传输到服务器,A7R4心得 篇一:SONY相机无线传输备份照片到群晖NAS介绍和设置教程 支持A9、A7R3和A7R4微单...

    A7R4心得 篇一:SONY相机无线传输备份照片到群晖NAS介绍和设置教程 支持A9.A7R3和A7R4微单 2020-06-06 21:45:06 38点赞 224收藏 33评论 如今SONY发布的 ...

  2. ultraedit介绍及使用教程

    ultraedit介绍及使用教程 一.介绍 文本编辑器软件 二.使用教程 (一)快捷方式使用 隐藏或显示菜单--Ctrl+F1 设定书签--Ctrl+F2 ​ 定位作用,给对应的行加高亮,方便下次查找 ...

  3. Fortify介绍及使用教程

    Fortify介绍及使用教程 简介 Fortify 是一个静态的.白盒的软件源代码安全测试工具.它通过内置的五大主要分析引擎:数据流.语义.结构.控制流.配置流等对应用软件的源代码进行静态的分析,通过 ...

  4. 网关服务Kong和konga介绍安装使用教程

    介绍 Kong是一款基于OpenResty(Nginx + Lua模块)编写的高可用.易扩展的,由Mashape公司开源的API Gateway项目.Kong是基于NGINX和Apache Cassa ...

  5. Web安全测试工具WVS介绍及安装教程

    Acunetix Web安全扫描神器功能 1.登录保护页面的自动扫描 一个网站最有可能被攻击和容易受到攻击的区域往往是那些需要用户登录的区域. 因此对的Acunetix最新版本现在可以自动地和轻松浏览 ...

  6. camvid数据集介绍_fastai 官方教程之查看数据

    本文为fastai官方教程编译版本.若有错误,欢迎指正. 总目录: 查看数据:本节为初级教程,介绍怎样快速的查看你的数据和模型预测结果. 推理学习器(Inference Learner):本节为中级教 ...

  7. Waymo自动驾驶数据集介绍与使用教程

    本文将对Waymo自动驾驶数据集(Waymo Open Dataset)进行介绍. 论文链接为:https://arxiv.org/abs/1912.04838v7 项目链接为:https://git ...

  8. 安卓抓包软件_Packet Capture安卓抓包神器介绍及使用教程

    除了干货,其他什么也没有 源码|资源|软件|教程|揭秘 关 注 Packet Capture是一款安卓抓包软件,能用来提取用户操作程序内容,Packet Capture可以捕获网络数据包,并记录它们使 ...

  9. java装饰者模式讲解视频教程_java装饰者模式介绍(图文教程)

    java装饰者模式介绍(图文教程).装饰者模式UML类图: 装饰者模式UML类图 java装饰者模式知识要点 装饰者模式动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. ...

最新文章

  1. python中module用法_Python学习之module用法
  2. [webrtc] rtcp模块中rtt时间计算
  3. 求一个向量变换为另一个向量的矩阵_OpenGL里旋转等变换矩阵为什么是4x4的矩阵...
  4. django 各种包的集合网站
  5. 时序数据库influxdb+grafana
  6. 指令由电子计算机,电子计算机主要是以
  7. java线程交替执行_Java synchronized线程交替运行实现过程详解
  8. 音乐编辑 java_求助 关于java编辑音乐
  9. android audiotrack mp3,播放mp3数据压缩由JLayer和Audiotrack latin mp3在android
  10. UnityShader31:Gamma
  11. 详解BetterZip对压缩包注释的一些相关小功能
  12. Solaris 10 X86安装备忘
  13. Java架构师和大数据架构师的区别是什么?哪个更有发展前景?
  14. 干货流出|腾讯内部几近满分的项目管理课程PPT
  15. 软件开发工程师证书有用吗_java软件工程师证书有用吗?
  16. HTML_旅行志界面
  17. 模拟布朗运动与几何布朗运动
  18. 元数建模工具chiner
  19. win10弹出计算机的内存不足,Win10系统提示“计算机内存不足”的解决方法
  20. ISP错误、ISV错误

热门文章

  1. LINUX操作系统centos安装
  2. windows下使用cmd命令文件批量重命名批量修改后缀重命名快捷键
  3. 极光推送SDK引起的内存泄露排查
  4. AppScan的许可证
  5. java实现年会微信签到,签到后在大屏中展示,导出签到信息
  6. java比较器原理理解
  7. 全国计算机等级考试二级三级对应,全国计算机等级考试三级(网络技术)对应的是三级A还是三级B?...
  8. 通过监听器实现在线人数统计
  9. 【C语言】哥德巴赫猜想
  10. Android高版本使用DocumentFile读写外置存储的问题