一、what?(是什么)
- RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。满足这些约束条件和原则的应用程序或设计就是RESTful
- 在目前主流的三种web服务交互方案中,REST相比SOAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简洁明了,无论是对URL的处理还是对Payload的编码,REST都倾向于用更加简单轻量的方法设计和实现。
二、why?(为什么要用)
概述:
它主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
详述:
1、原则条件
无状态:在web应用程序最重要的REST原则是:客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必须的信息。这有什么好处?这意味着 Server 不会保存 Client 的状态信息,也就是说不需要特定的 Server 来响应(假如特定的 Server 宕机,服务将会停止),使得一个客户端请求可以被任何可用的 Server 响应,有利于实现负载均衡,在分布式web系统下,有多个可用的 Server ,每个 Server 都可以处理 Client 发送的请求。其次无状态请求拥有较强的容错性和可伸缩性,如果一台服务器宕机,无状态请求可以透明的交给另一台 Server 来进行处理。参考文章:https://blog.csdn.net/jmilk/article/details/50461577
资源:在服务器端,应用程序的状态和功能可以分为各种资源。资源是一个有趣的实体概念,它向客户端公开。资源有哪些例子?如:应用程序对象、数据库记录、算法、甚至一段文本,一张图片、一种服务等等。每个资源都使用唯一的一个URI指向它,想要获取这个资源,就访问它的 URI,因此 URI 就成了每一个资源的地址或者独一无二的识别符。
传输方法:使用标准的HTTP方法,如:GET 用来获取资源、PUT 用来更新资源、POST 用来新建资源(也可以用来更新资源)、DELETE 用来删除资源
2、分层系统
组件无法了解它与之交互的中间层以外的组件。通过将系统知识限制在单个层,可以限制整个系统的复杂性,促进了底层的独立性。统一界面简化了整个系统架构,改进了子系统之间交互的可见性。REST简化了客户端和服务器的实现。
三、how?(如何使用)
http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html