华润五彩城, 清河中街
RESTful Web Service
使用SpringMVC 实现RESTful { REST 和 RESTful Web Service }
··· REST是什么 ?
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
REST 是Web服务的一种架构风格
使用HTTP、URL 等广泛流行的标准和协议
轻量级、跨平台‘跨语言的架构设计。
REST是一种设计风格。它不是一种标准,也不是一种软件,而是一种思想。
REST通常基于使用HTTP ,URL ,和XML,json 以及 HTML这些现有的广泛流行的协议和标准。
··· RESTful是什么?
· RESTful对应的中文是 REST 式的。
· RESTful Web Service是一种常见的REST的应用,是遵守了REST风格的Web服务。
· REST式的Web服务是一种ROA (面向自资源的架构)
··· REST 架构的主要原则
·网络上的所有事物都可以被抽象为资源 (Resource)
·每个资源都有一个唯一的资源标识符 (Resource identifier)
·同一资源具有多种表现形式 (XML JSON等)
·对资源的各种操作不会改变资源标识符。
·所有的操作都是无状态的 (Stateless)
·符合REST原则的架构方式即可称为RESTful
··· URI 和 URL
URI - http://example.com/users/
URL http://example.com/users/{user}{one for each user}
··· RESTful的无状态性:
·无状态性使得客户端和服务端不必保存对方的详细信息,服务器只需要处理当前Request,而不必了解前面Request的历史。从而可以更容易地释放资源。
让服务器充分利用Pool技术来提高稳定性。
··· 资源操作 < 学习的核心 >
·http://example.com/users/
- GET : 获得一个资源
POST : 创建一个新的资源
PUT : 修改一个资源的状态
DELETE : 删除一个资源
·资源展现
-- XML --JSON -..........
对比:
之前的操作:
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 删除用户数据
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 删除用户数据
REST接口定义
http方法 资源操作 幂等 安全
GET SELECT 是 是
POST INSERT 否 否
PUT UPDATE 是 是
DELETE DELETE 是 否
幂等性:同一REST接口的多次访问,得到的资源状态是相同的。
安全性:对该REST 接口访问,不会使服务器端资源的状态发生改变。
REST接口设计:
·URL的组成; - 网络协议(http、https) -服务器地址
- 接口名称 - ?参数列表
·URL定义限定 - 不要使用大写字母
- 使用中线 - 代替下划线_
- 参数列表应该被encode过
响应设计:
·Content body 仅仅用来传输数据。
·数据要做到拿来就可用的原则,不需要”拆箱“的过程。
·用来描述数据或者请求的元数据放Header中,例如 X- Result-Fields。
示例:
Response Headers:
Status :200
Response Body:{
“trade_id” :1234,
“trade_name” : “BaLa BaLa”
}
Http 响应:
Code Http Operation Body Contents Description
200 GET ,PUT 资源 操作成功
201 POST 资源,元数据 对象创建成功
202 POST,PUT,DELETE,PATCH N/A 请求已经被接受
204 DELETE,PUT,PATCH N/A 操作执行成功,但无返回类型
301 GET link 资源已被移除
303 GET link 重定向
304 GET N/A 资源没有被修改
400 GET,POST,,PUT,,DELETE,PATCH错误提示 参数列表错误缺少,格式不匹配
401 GET,POST,PUT,DELETE,,PATCH错误提示 未授权
403 GET,POST,PUT,DELETE,PATCH错误提示 访问受限,授权过期
404 GET,POST,PUT,DELETE,,PATCH错误提示 资源,服务未找到
405 GET,POST,PUT,DELETE,,PATCH错误提示 不允许的http方法
409 GET,POST,PUT,DELETE,,PATCH错误提示 资源冲突,或者资源被锁定
415 GET,POST,PUT,DELETE,,PATCH错误提示 不支持的数据(媒体)类型
429 GET,POST,PUT,DELETE,,PATCH错误提示 请求过多被限制
500 GET,POST,PUT,DELETE,,PATCH错误提示 系统内部错误
501 GET,POST,PUT,DELETE,,PATCH错误提示 接口未实现