Nestjs 学习系列基础篇2 - RESTful API

78 阅读2分钟

Nestjs 学习系列基础篇2 - RESTful API

关于NestJS项目中的api风格的选择

nestjs项目中推荐使用RESTful API风格

RESTful API 风格

RESTful API 简介

表征状态传输 (REST) 缩写:Representational State Transfer 是一种软件架构,决定了 API 的工作条件。REST 最初作为管理复杂网络(例如互联网)上的通信的指南而建立。您可以使用基于 REST 的架构为高性能和可靠的大规模通信提供支持。您可以轻松应用和修改此种架构,为任何 API 系统带来可见性和跨平台可能性。

起源

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。

Representational State Transfer 表现层状态转化

==Representational State Transfer 表现层状态转化 = Resources ( 省略 ) + Representational (表现) + State Transfer (状态转换)==

  • 资源 Resources
    • 网络上的实体, 一段文本、一张照片、一张图片
  • 表现层 Representation
    • 我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。
    • 用户应该是 xml格式 、json格式、html格式
    • 应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。
  • 状态转化 State Transfer
    • 如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。
      • HTTP动词:表示一个动作
        • GET:读取(Read)
        • POST:新建(Create)
        • PUT:更新(Update)
        • PATCH:更新(Update),部分更新
        • DELETE:删除(Delete)

URL设计

  • 宾语:表示动作的目标对象
    • 是一个名词
// 推荐
GET /users
// 不推荐
GET /getUsers
  - 通常是复数
// 推荐
GET /users
GET /users/1
// 不推荐
GET /user
GET /user/1
  - 避免多级
// 推荐
GET /authors/12?categories=2
// 不推荐
GET /authors/12/categories/2