本篇文章主要介绍node.js中如何使用express框架进行get和post的请求。
本文案例中将数据存放在本地文件中,使用get和post请求对文件进行读取和添加数据,模拟实际开发中的情形。
如果不太了解node基础的,可以先去看我的另一篇文章 node.js新手入门—教你写属于自己的接口get和post请求基础详解
express框架是基于node.js的web应用框架,可快速搭建一个完整功能的网站,丰富的HTTP工具以及来自Connect框架的中间件随取随用。我上一篇文章采用原生node举例了get和post请求,大家可以去看看node.js中HTTP不同请求方法的处理
可以和 Express框架写法进行对比,你就知道有多方便了~
npm install express
npx express-generator
我这里使用第一种方法安装了express,下面就用案例实现express中使用get和post请求,先来看项目目录:
app.js 是项目启动文件,存放案例的主要逻辑
db.js 是文件方法抽离的文件,存放文件读取数据和添加数据的两个方法
db.json 是本地的json文件,存放模拟的json格式的用户数据
用户数据保存在db.json 当中,通过get获取到用户数据的流程如下:
在db.js文件中,我们对读取文件的方法进行封装:
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中进行使用上述封装的读取文件的方法:
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请求:
可以看到用户的数据以及可以成功返回啦:
添加用户数据到db.json,通过POST添加用户数据的流程如下:
刚刚我们写了读取文件的封装,下面继续封装数据写入文件的方法:
使用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框架对不同请求的处理,这样能帮助自己更好的去理解逻辑和流程。
有问题欢迎在评论区留言~~~~~