• 学会nodejs中express框架进行get和post请求,如何获取和增加用户数据?(express的安装以及实战案例讲解)


    前言

    本篇文章主要介绍node.js中如何使用express框架进行get和post的请求。
    本文案例中将数据存放在本地文件中,使用get和post请求对文件进行读取和添加数据,模拟实际开发中的情形。
    
    • 1
    • 2

    如果不太了解node基础的,可以先去看我的另一篇文章 node.js新手入门—教你写属于自己的接口get和post请求基础详解

    Express框架

    express框架是基于node.js的web应用框架,可快速搭建一个完整功能的网站,丰富的HTTP工具以及来自Connect框架的中间件随取随用。我上一篇文章采用原生node举例了get和post请求,大家可以去看看node.js中HTTP不同请求方法的处理
    可以和 Express框架写法进行对比,你就知道有多方便了~

    express的安装

    1. 此方法是在文件夹中安装express,不会生成express模板,需要自己去写express相关的文件
    npm install express
    
    • 1

    在这里插入图片描述

    1. 生成express项目模板(一般用这种)
     npx express-generator
    
    • 1

    在这里插入图片描述

    案例举例

    我这里使用第一种方法安装了express,下面就用案例实现express中使用get和post请求,先来看项目目录:
    在这里插入图片描述
    app.js 是项目启动文件,存放案例的主要逻辑
    db.js 是文件方法抽离的文件,存放文件读取数据和添加数据的两个方法
    db.json 是本地的json文件,存放模拟的json格式的用户数据

    GET请求获取用户数据

    用户数据保存在db.json 当中,通过get获取到用户数据的流程如下:

    1. 通过express框架中提供的app.get方法接收get请求
    2. 通过 readFile方法读取db.json 文件中的数据
    3. 数据经过处理后通过res.send方法进行响应

    在db.js文件中,我们对读取文件的方法进行封装:

    • 这里引入了promisify 方法,把fs.readFile进行promis化,这样在下面就能使用async await进行异步。
    • 使用JSON.parse对读取的数据进行解析为 JavaScript 对象
    const fs = require('fs')
    const { promisify } = require('util')
    const readFile = promisify(fs.readFile)
    
    exports.getDb = async()=>{
      let data = await readFile('./db.json','utf8')
      return JSON.parse(data)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    然后我们可以在app.js中进行使用上述封装的读取文件的方法:

    • 使用app.get方法接收get请求,然后使用try … catch捕捉方法中的异常
    • 使用刚刚写的读取文件的方法,通过res.send方法返回数据
    • rres.status(500).json({ error })函数设置响应的HTTP状态码,如果没有读取到文件便返回error信息
    const express = require('express')
    const db = require('./db')
    
    const app = express()
    app.get('/', async function (req, res) {
      try {
        let back = await db.getDb()
        res.send(back.users)
      } catch (error) {
        res.status(500).json({ error })
      }
    })
    app.listen(3000, () => {
      console.log('Run http://127.0.0.1:3000');
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    然后我们来看看效果,运行文件用浏览器访问地址,浏览器默认就是get请求:
    可以看到用户的数据以及可以成功返回啦:
    在这里插入图片描述

    POST请求添加用户数据

    添加用户数据到db.json,通过POST添加用户数据的流程如下:

    1. 使用app.post方法接收post请求
    2. 通过req.body判断post请求中请求体的数据,如果为空则使用res.status(403).json设置响应状态码及响应数据
    3. 读取到文件的内容,判断文件中用户的个数,给新的用户生成递增的新id
    4. 将请求体中的数据使用添加文件的方法 写入db.json中

    刚刚我们写了读取文件的封装,下面继续封装数据写入文件的方法:
    使用JSON.stringify将传过来的data转换为字符串,然后通过writeFile方法写入字符串

    exports.serveDb = async(data)=>{
      let stringData = JSON.stringify(data)
      return await writeFile('./db.json',stringData)
    }
    
    • 1
    • 2
    • 3
    • 4

    然后我们可以在app.js中处理POST请求:
    5. 从express中引入json,因为post请求中请求体的数据是json格式,通过app.use(express.json())进行解析
    6. 通过req.body获取post请求中请求体的内容,如果没有拿到内容就设置响应状态反应错误信息
    7. 使用db.getDb方法读取文件内容,拿到最后一个用户的id,id+1为新用户的id。将接收的数据通过db.serveDb方法写入到文件中
    8. 最后对写入文件的返回数据进行处理,设置响应状态。

    const { json } = require('express')
    const express = require('express')
    const db = require('./db')
    
    const app = express()
    app.use(express.json())
    app.get('/', async function (req, res) { // get部分见上面}) 
    app.post('/', async (req, res) => {
      let body = req.body
      if (!body) {
        res.status(403).json({
          error: '缺少用户信息'
        })
      }
      let jsonObj = await db.getDb()
      body.id = jsonObj.users[jsonObj.users.length-1].id+1
      jsonObj.users.push(body)
      try {
        let w = await db.serveDb(jsonObj)
        if(!w){
          res.status(200).send({
            msg:'添加成功'
          })
        }
      } catch (error) {
        res.status(500).json({
          error
        })
      }
    })
    app.listen(3000, () => {
      console.log('Run http://127.0.0.1:3000');
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    写完之后我们来测试接口,这里需要用到postman接口测试工具
    在这里插入图片描述
    这样就能模拟发送post请求,并且我们看到有返回的结果“添加成功”
    这个时候来看看db.json文件:
    可以看到我们刚刚发送请求的数据已经成功的写入了
    在这里插入图片描述

    写在最后

    本文主要介绍了express框架中进行get和post请求的处理,在实际开发中无非就联动数据库进行增查删改,以及实现其它的业务逻辑。新学的朋友可以自己动手去尝试一下,亲身感受一下express框架对不同请求的处理,这样能帮助自己更好的去理解逻辑和流程。
    有问题欢迎在评论区留言~~~~~

  • 相关阅读:
    jsp+springmvc的校园失物招领管理平台
    Microsoft Remote Desktop Mac
    嵌入式Linux驱动开发(I2C专题)(三)
    MCE 虚拟筛选、小分子化合物库
    JUC05-AQS、ReentrantLock原理
    uniapp-chatgpt跨端仿ChatGPT实例|uniapp+vue3+pinia多端聊天模板
    使用navicat查看类型颜色
    如何在您的Shopify商店中添加实时聊天功能?
    c++推箱子小游戏
    FPGA零基础学习:数字电路中的数字表示
  • 原文地址:https://blog.csdn.net/weixin_45745641/article/details/126895726