【REST】REST、RESTFUL的理解以及SpringMVC实现Restful编程

来源:互联网 发布:大学宿舍淘宝店 编辑:程序博客网 时间:2024/05/26 02:53

网上有相关很多rest的文章,本人看着实在是晦涩,太抽象了,很难看懂。

其实HTTP 1.1协议的整体软件架构就可以说是REST架构

了解REST得知道5个名字:

1、资源 Resource

资源就是服务器上获取到的东西都可以说是资源,一条用户记录,一个用户的密码,一张图片等等都是

2、资源的表述 Representation

就是资源的格式,是HTML、XML、JSON、纯文本、图片等等,可以用各种各样的格式来表述你获取到的资源,这就是资源的表述

3、状态转移 State Transfer

URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。操作是动词,资源是名词

4、统一接口 Uniform Interface

REST必须通过统一的接口对资源进行操作,HTTP1.1协议定义了资源的统一接口:

·GET/POST/PUT/DELETE/PATCH/HEAD/OPTIONS

`HTTP  HEAD可以自定义

·HTTP STATUS响应状态 可自定义

·一套标准的内容协商机制

·一套标准的缓存机制

·一套标准的客户端身份认证机制

5、超文本驱动 Hypertext Driven

资源之间通过超链接相互关联,超链接代表资源之间的关系,也代表可执行的状态迁移


Restful API就是按照REST架构的思想设计出来的API

核心就是:将API拆分为逻辑上的资源,这些资源通过http(GET/POST/PUT/DELETE等)被操作

SpringMVC的 Restful API



这里就是个简单的例子,URL中tests表示资源,使用GET方法操作,得到资源对象,这里除了GET以外的HTTP方法是404的结果





从以上实例想想,其实挺合理的,这么丰富的HTTP方法,我们干嘛还通过我们的自定义url来定义各种操作呢!!


有人说Restful API最好做到Hypermedia,超媒体,即返回结果提供链接,对应下一步的API,即使用户不查文档,也知道下一步该做什么,不过个人觉得,不是刚需,或者我还没遇到这种需求。github就是这样的


上面的实例是最基本的API设计了,有个很明显的缺陷,就是API升级时会遇到问题,因为没有版本的概念,导致服务端升级的话,所有使用的人都受到影响,但是往往实际中,有些用户可能对新版本的API不太需要,仍然想沿用旧的,那么唯一的办法就是部署两套服务端,一个旧的,一个新的,显然成本太高了。

所以需要在API中引入版本的概念



将版本号作为API的URL中的一个资源来设计

将来如果升级版本了,你可以通过在代码中新增一个else分支即可,原本的版本号的API该怎样继续保持不动,新的版本的逻辑新增代码即可,这样可以继续支持旧版本,将来可以通过监控来检测旧版本的使用率,做到平滑过渡,慢慢废弃旧版本。






1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 在手机上怎么办手机号 办手机卡被骗了怎么办 大王卡注销余额怎么办 注销大王卡话费怎么办 手机卡里还有话费怎么办 多余的话费要怎么办 联通流量欠费500怎么办 手机卡没了怎么办呢 联通显示无服务怎么办 大王卡停用了怎么办 手机卡中 剩余话费怎么办 小米被流量限制怎么办 支付宝禁止联网怎么办 手机号登录不上怎么办 电信手机号无法打电话怎么办 新手机号无法注册怎么办 电信手机怎么办流量包 qq华夏到监牢怎么办 炫舞被骗2900怎么办 qq好友申诉后怎么办 无好友辅助申请怎么办 辅助申诉成功后怎么办 qq绑不了手机号怎么办 新办号码有微信怎么办 两手机互换号后微信怎么办 手机申请不了qq怎么办 快手账号保护了怎么办 qq号过期登不上怎么办 xp 登陆界面不见了怎么办 手机号qq 别人登录怎么办 qq号申请频繁怎么办 qq号实名验证怎么办 陌陌没法注册怎么办 腾讯q币充值错误怎么办 手机号码注册微信号怎么办 q币充错了号怎么办 微信超额度提现都不可以怎么办 微信发红包转账限额怎么办 银行卡没设密码怎么办 宜人贷逾期一天怎么办 快手实名已认证怎么办