Node番外篇:浅谈RESTful

今天的node番外篇我们来说说RESTful的那些事!


首先,REST是什么?

  • REST(Representational State Transfer) REST简单的理解是一种设计风格,用于创建万维网软件架构的风格,常应用于网络服务的创建。

REST中的六个限制:

  • 客户端-服务端架构(Client-Server)
    原因: (1)关注点分离,服务端专注于数据的逻辑处理,提升了简单性,前端专注于用户界面渲染,提升了可移植性
  • 无状态
    原因: (1)所有的用户会话信息都保存在客户端,每次的请求都必须包括所有的会话内容,不依赖于上下文,服务端不保存会话信息,提升简单性,可靠性,可见性
  • 缓存(Cache)
    原因: (1)所有的服务端相应都需要被标注为可缓存或不可缓存,减少前后端的交互,提升使用性能
  • 统一接口(Uniform Interface)
    原因: (1)接口设计尽可能的统一通用,提升简单性,可见性;(2)接口与实现解耦,使得前后端可以独立开发迭代
  • 分层系统(Layered System)
    原因: (1)每层只知道相邻一层的状态逻辑,客户端不清楚是和代理层还是和实际的服务器之间进行的通信。
  • 按需代码(Code-On-Demand)
    原因: (1)客户端可以下载运行服务端传递过来的代码(如JS)(2)减少一些特定的功能,使得客户端开发简化

RESTful API的设计规范:

  1. URI使用名词,尽量使用复数形式
  2. URI使用嵌套表示关联关系, 如 /user/login…
  3. 使用正确的HTTP方法: 如GET/POST/PUT/DELETE/…
  4. 不符合CRUD(增删改查)的API,可使用POST/action/资源 的形式

RESTful只是一种设计规范,并不是实际的代码API等等,gitHub的官方网站可谓是RESTful 的教科书级别的实现,所以大家对于RESTful的设计完全是可以参考gitHub的设计的

你可能感兴趣的:(node)