//需求:通过post方式实现新增英雄的功能

//1、创建服务器

//2、总体思路是:创建服务器---获取请求接口和方式---‘data’监听事件接收数据---'end'事件执行完接收---把原json文件读取并转换成数组---通过URLSearchParams解析请求数据---用fs方式把数据追加到数组中---展示数据

//3、实现事项:json数据文件---node.js文件---调试工具:postman

       JS文件

const http = require('http') //引入HTTP协议模块
const fs = require('fs') //引入fs模块
const { json } = require('node:stream/consumers')

//创建HTTP协议的服务器
let serer = http.createServer((req, res) => {
    //1.1判断接口名称和请求方式
    let url = req.url
    let method = req.method
    res.setHeader('content-type', 'text/html;charset=utf8')
    if (url === '/add' && method === 'POST') {

        let result = '' //接收前端的参数
            //data事件,每次收到一部分参数数据就会触发一次这个事件。
            //1.数据大会分批次接收
            //2.数据小则可以一次性接收完毕
        req.on('data', (chunk) => { //chunk代表传入的数据
            console.log('接收数据成功');
            result += chunk
        })

        // end事件,全部的参数数据接收完成之后会执行一次。
        req.on('end', () => {

            //读取json文件中的内容
            let str = fs.readFileSync('./data.json', 'utf-8')
                //把数据转换成数组
            let arr = JSON.parse(str)
                //解析前端传入的数据
            let query = new URLSearchParams(result)
            arr.push({
                name: query.get('name'),
                skinname: query.get('skinname')
            })

            //把最新的数据写入json文件中
            fs.writeFileSync('./data.json', JSON.stringify(arr))
                //把文件读取出来
            let newStr = fs.readFileSync('./data.json', 'utf-8')
                //把文件按内容展示在页面中
            res.end(newStr)
        })

    } //请求接口或方式错误的处理
    else {
        res.statusCode = 404
        res.end('找不到请求数据接口')
    }

})

//监听服务器,8999端口号
serer.listen(8999, () => {
    console.log('http://127.0.0.1:8999');
})

JSON文件

[{"name":"后裔","skinname":"精灵王"},
{"name":"程咬金","skinname":"功夫厨神"},
{"name":"伽罗","skinname":"太华"},
{"name":"孙尚香","skinname":"时之恋人"},
{"name":"鲁班七号","skinname":"黑桃队长"}]

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐