RESTful 是什么?
RESTful本质是一种软件架构风格, 面向资源来设计API
解决的问题
- 降低了开发的复杂度
- 提高系统的可伸缩性能
设计概念和准则
- 网络上的所有事物都可以抽象为资源。
- 每一个资源都有唯一的资源标志, 对资源的操作不会改变这些标识。
- 所有的操作都是无状态的。
资源
什么是资源?
所谓的 "资源",就是网络上的一个实体,或者说是网络上的一个具体信息。
HTTP协议-URL
HTTP协议是一个属于应用层的协议, 特点是简洁,快速。
schema://host[:port]/path[?query-string][#anchor]
- schema 指定底层使用的协议(例如: http, https, ftp)
- host 服务器的IP地址 或 域名
- port 服务器端口,默认80
- path 访问资源的路径
- query-string 发送给HTTP服务器的数据
- anchor 锚
HTTP协议-请求
组成格式:请求行, 消息报头, 请求正文
请求行
格式: Method Request-URI HTTP-Version CRLF
举例
GET / HTTP/1.1 CRLF
请求方法
- GET 请求获取Request-URI所标识的资源
- POST 在Request-URI 所标识的资源后附加的数据
- HEAD 请求获取由Request-URI所标识的资源的响应消息报头
- PUT 请求服务器存储一个资源, 并用Request-URI作为其标识
- DELETE 请求服务器删除Request-URI所标识的资源
- OPTIONS 请求查询服务器的性能, 或者查询与资源相关的选项和需求
HTTP协议-响应
组成格式: 状态行, 消息报头, 响应正文
状态行
HTTP-Version Status-Code Reason-phrase CRLF
HTTP/1.1 200 OK
常用状态码
- 200 OK 客户端请求成功
- 400 Bad Request 客户端请求有语法错误,不能被服务器所理解
- 401 Unauthorized 服务器收到请求,但是拒绝提供服务
- 404 Not Found 请求资源不存在
- 500 Internal Server Error 服务器发生不可预期的错误
- 503 Server Unavailable 服务器当前不能处理客户端的请求
RESTful架构与 其他架构的区别
SOAP WebService
WebService 是一种跨编程语言和操作系统平台的远程调用技术。
WebService 通过HTTP协议发送请求和接受结果时采用XML格式封装,并增加了一些特定的HTTP消息头,这些特定的HTTP消息头和XML内容格式就是SOAP协议。
效率和易用性
SOAP由于各种需求不断扩充其本身协议的内容,导致在SOAP处理方面的性能有所下降。同时在易用性方面以及学习成本上也有所增加。
RESTful由于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了HTTP最初的应用协议设计理念。
安全性(还需探索)
RESTful 对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。(安全性应该可以提升)
SOAP的成熟性可以给需要提供多开发语言的,对于安全性要求较高的接口设计带来便利。所以单纯从设计模式来看谁会占据主导地位没有什么意义,关键还是要看应用场景。
网友评论