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

前言

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

如果不太了解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. 生成express项目模板(一般用这种)
 npx express-generator

在这里插入图片描述

案例举例

我这里使用第一种方法安装了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)
}

然后我们可以在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');
})

然后我们来看看效果,运行文件用浏览器访问地址,浏览器默认就是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)
}

然后我们可以在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');
})

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

写在最后

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

猜你喜欢

转载自blog.csdn.net/weixin_45745641/article/details/126895726