Express-RestfulApi前言设计原则实例

这是我参与8月更文挑战的第6天,活动详情查看:8月更文挑战

前言

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。" 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力, 更好地使用现有Web标准中的一些准则和约束。

总结就是,RestfulApi 是一种流行的 API 设计风格,可以让接口含义更加清晰,更简洁,更有层次,可维护性更高

下面就就简单基于 Express 设计一个 Restful 结构的 Api

设计原则

在这之前说一下原则,接口不要包含动词,而是一种资源,举例,设计一个用户的相关接口,包括,

  • 获取用户列表
  • 获取用户详情
  • 添加用户
  • 更新用户信息
  • 删除用户信息

一般设计接口名称 往往会加入动词 get 、add、 up、 del 比如

  • 获取用户列表 /getUserList
  • 获取用户详情 /getUserDetail
  • 添加用户 /addUser
  • 更新用户信息 /upDataUser
  • 删除用户信息 /delUser

因为资源标识一种实体,所以应该是名词,URI 不应该有动词,动词应该放在http协议中中,例如 get post put delete

所以正确的命名应该是

id代表用户唯一标识

功能 URI 请求方式
获取用户列表 /user get
获取用户详情 /user/:id get
添加用户 /user post
更新用户信息 /user put
删除用户信息 /user/:id delete

这样 是不是简洁明了,只用到一个关键字,user


实例

基于之前的一篇文章 基础架构搭建 Express-MVC 创建了获取用户列表,下面再接着依次实现 新增用户、获取详情、更新用户、删除用户 的api

获取用户列表

获取用户列表接口 不在介绍,想了解请看 Express-MVC

新增用户

添加路由

router.post('/user', user.create)
复制代码

user 控制器下添加create 方法

// 添加用户
async function create(req, res, next){
  let result = await UserModel.create(req.body);
  if(result){
    res.send({
      code: 200,
      data:result,
      msg:'创建成功'
    })
  }
}

复制代码

获取用户详情

添加路由

router.get('/user/:id', user.show)
复制代码

user 控制器下添加show 方法

// 获取用户详情
async function show(req, res, next){
  let result = await UserModel.findOne({
    where: {
      id:req.params.id
    }
  })
  if(result){
    res.send({
      code: 200,
      data:result,
      msg:'查询成功成功'
    })
  }
}
复制代码

删除用户

添加路由

router.delete('/user/:id', user.del)
复制代码

user 控制器下添加del 方法

// 删除用户
async function del(req, res, next){
  let result = await UserModel.destroy({where:{
    id: req.params.id
  }});
  if(result){
    res.send({
      code: 200,
      data:result,
      msg:'删除成功'
    })
  }
}
复制代码

更新用户信息

添加路由

router.put('/user/:id', user.update)
复制代码

user 控制器下添加update 方法

// 修改用户数据
async function update(req, res, next){
  
  let result = await UserModel.update({
    age: req.body.age,
    name:req.body.name
  },{where:{
    id: req.body.id
  }});
  if(result){
    res.send({
      code: 200,
      data:result,
      msg:'修改成功'
    })
  }
}
复制代码

以上就是本篇的全部内容了,非常感谢帅哥美女们能看到这里,如果这个文章写得还不错或者对你有一点点帮助,求点赞,求关注,求分享,当然有任何问题可以在评论讨论,我都会积极回答的,再次感谢😁