RESTful
各论坛对于RESTful架构风格的博文有不少,学习过后记录下一些小笔记~
- 本质:一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
- 核心: 面向资源
- 万物抽象为资源
- 每一种资源都有唯一标识
- 所有的操作无状态
解决问题:
- 降低开发的复杂性
- 提高系统的可伸缩性
http
- 请求方式
- GET:请求指定页面信息,并返回实体主体
- POST:向指定资源提交数据进行处理,譬如提交表单或上传文件,可导致新的资源地建立和已有资源地修改
- HEAD:与GET类似,但HEAD并不返回消息体,只返回页面首部
- PUT:传输数据替代指定地服务器端内容
- PATCH:修改部分属性
- DELETE:删除指定资源
- OPTIONS:查询服务器的性能或查询与资源相关的选项和需求
- 常见状态码:
- 200 请求成功
- 301:资源被永久转移到其他URL
- 400:语法错误
- 401:未授权(有认证参数),拒绝提供服务
- 403:用户访问禁止(无认证参数)
- 404 资源不存在
- 500:服务器内部出错
- 503:服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
- 请求方式
与其他架构的区别
- SOAP WEBSERVICE
- 由于各种需求不断扩充本身协议的内容,导致其处理性能方面下降
- 复杂的、重量级的协议
- 安全性较高
- REST
- 面向资源接口设计和操作抽象简化了开发者的不良设计,极大限度地利用http最初的应用协议设计理念
- 轻量级
- 安全性较低
RESTful API
- 路径
- 无动词
- 名词使用复数
- HTTP动词
- CRUD
- PATCH(仅返回更新的属性)
- PUT(返回完整对象)
- 过滤信息
- 譬如:”?offset = 10”;
- 状态码
- 错误处理
- 路径
由Server统一提供一套RESTful API,web+ios+android作为同等公民调用API。各端发展到现在,都有一套比较成熟的框架来帮开发者事半功倍。