为了账号安全,请及时绑定邮箱和手机立即绑定
首页 手记 【九月打卡】第18天 后端接口设计和技术选型

【九月打卡】第18天 后端接口设计和技术选型

2022.09.22 23:53 31浏览

课程名称web前端架构师

课程章节:第14周 第二章

主讲老师:张轩

课程内容:后端接口文档设计、后端技术选型express 的介绍

接口文档设计

后端接口采用 restful 格式

路径 - Endpoint

每个网址代表一种资源(resource),正好可以和我们的需求分类的这几种实体相对应。

动词 - Verb (请求方式)

请求方式设计

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
  • DELETE(DELETE):从服务器删除资源。

例如文章接口。接口路径 /article
* 创建文章 post
* 更新文章的某个属性 put
* 更新文章的全部属性。patch
* 删除文章 delete
* 获取文章。get

过滤

当我们的信息数量过多时,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。例如我们列表的分页

  • ?limit=2&offset=2

HTTP 返回状态码

HTTP 响应状态码用来表明特定 HTTP 请求是否成功完成。 响应被归为以下五大类:

  • 信息响应 (100–199)
  • 成功响应 (200–299)
  • 重定向消息 (300–399)
  • 客户端错误响应 (400–499)
  • 服务端错误响应 (500–599)

此外我们还需要一个错误码的字断,可以让错误信息更加明确

{
  errno: 1,
  ...
  message: 'xxx'
}

技术选型 express

安装

npm i express

也可以使用 Express 应用程序生成器 进行安装

使用

express 的使用可以参考官方文档 https://www.expressjs.com.cn/ ,使用非常简单

const express = require('express')
const app = express()
const port = 3000

app.get('/', (req, res) => {
  res.send('Hello World!')
})

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

优缺点

优点

快速,简单,易上手。

缺点

  • 路由响应中,很可能有:从外部请求数据的服务,有验证路由的请求参数,返回特定的格式。
  • 所有逻辑不分青红皂白的写在一起,很容易产生冗长的难以维护的代码。
  • 一些大型必备的模块,如第三方服务初始化,安全,日志都没有明确的标准。

中间键

中间件可以完成的任务

  • 执行任何代码。
  • 对请求和响应对象进行更改。
  • 结束请求/响应循环。
  • 调用堆栈中的下一个中间件。

下面写个中间键

const express = require('express')
const app = express()

function logger(req, res, next) {
    console.log('method ',req.method, ', url', req.path)
    next()
}
function requestTime(req, res, next) {
   console.log('time')
   req.requestTime = Date.now()
   next()
   console.log('end)
   // 此时无法修改发送的数据
}
app.use(logger)
app.use(requestTime)
app.get('/', (req, res) => {
    console.log('get ')
    res.json({ user: 'tobi' })
})
app.listen(3000, () => {
    console.log('serve listen 3000')
})

我们可以看到现use 的中间键会先执行

express 中间键的执行是个洋葱模型,中间键内调用next 可以等待下个中间键执行完毕,但是 express 在发送数据只能调用一次,并且没办法修改

图片描述

点击查看更多内容
0人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Python工程师
手记
粉丝
0
获赞与收藏
0

关注TA,一起探索更多经验知识

同主题相似文章浏览排行榜

风间影月说签约讲师

50篇手记,涉及Java、MySQL、Redis、Spring等方向

进入讨论

Tony Bai 说签约讲师

146篇手记,涉及Go、C、Java、Python等方向

进入讨论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消