- 什么是RESTful
- Representational State Transfer 具象状态传输
- 是一种软件架构风格,设计风格,提供一种设计原则和约束规范。
- 用户客户端和服务器之间的软件交互。
- 优点:简洁,有层次,易于实现缓存。
- 设计原则
- 以资源为中心设计
- 无状态的网络协议
- 分层系统
- 可缓存
- 统一接口
- 深入理解设计原则
- 无状态的网络协议
- 在基于状态的Web服务中,Client与Server交互的信息(如:用户登录状态)会保存在Server的Session中。再这样的前提下,Client中的用户请求只能被保存有此用户相关状态信息的服务器所接受和理解,这也就意味着在基于状态的Web系统中的Server无法对用户请求进行负载均衡等自由的调度(一个Client请求只能由一个指定的Server处理)。同时这也会导致另外一个容错性的问题,如果指定的Server在Client的用户发出请求的过程中宕机,那么此用户最近的所有交互操作将无法被转移至别的Server上,即此请求将无效化
- 好处,降低延迟,负载均衡设计,易于扩展
- 解决资源授权问题,用户自己带着状态(token等)访问资源。
- 无状态的网络协议
- 设计规范
- 以资源为中心的URL设计
- 尽量使用https
- 注明api地址和版本 https://api.github.com/v3
- 使用正确的http方法,get,post,put,delete
- URL不包含动作,仅指明资源路径地址,添加动作或者方法可能会导致后期出现大量的接口,导致混乱而且难以维护。不符合crud的情况,用post方法
- 资源状态可控,limit,page,field等字段控制资源输出
- 返回合适的状态码,200(成功)300(重定向)400(请求错误)500(服务器错误)
- 返回详细的错误信息,用户名错误,密码错误等
- 返回适当的解释码,6000,7000,8000等
- 验证和授权,没通过验证401,无授权404(这是为了防止私有存储库意外泄露给未经授权的用户)
- 限流,登陆限制,短信、支付等限制。防止ddos攻击,保重用户数据安全。
- 开发中完全不必为了RESTful而RESTful,不是所有真理都适合所有情况,取其精华即可。
RESTful架构风格的理解
最新推荐文章于 2025-07-07 21:15:30 发布