Node.js进阶

Node.js进阶

页面端的操作

在这里插入图片描述
fetch(Uurl).then(data=>data.json()).then(res=>{
console.log(res); //发送接收到的内容
});

post请求

在这里插入图片描述

根据不同的接口实现不同的功能

在这里插入图片描述
根据功能的不同可以有不同的接口,例如登录注册可以在同一个页面上实现

如果不引入Express,post请求
在这里插入图片描述
“on”,"end"监听事件,并将收到的数据保存到mydata变量中。

引入express包

cnpm install express --save

根据口令,引入express包之后,会出现一个这样的清单列表
在这里插入图片描述

创建一个js文件,建立服务器
引入express,接收她的返回值,最后要以send结尾。
在这里插入图片描述

res.header(‘Access-Control-Allow-Origin’, ‘’);
res.header(‘Access-Control-Allow-Headers’, ‘Content-Type’);
res.header(‘Access-Control-Allow-Methods’, '
’);
res.header(‘Content-Type’, ‘application/json;charset=utf-8’);
next();
!!!跨域问题
基本操作~,调用函数读取判断及写入

let express = require('express');
let fs = require('fs');
let bodyParser = require('body-parser');
let app = express();
app.use((req, res, next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', '*');
    res.header('Content-Type', 'application/json;charset=utf-8');
    next();
});
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(bodyParser.json());

app.post('/register', (req, res) => {
    let Data = req.body;
    for(item in Data){
        // console.log(item);
        var Datas=JSON.parse(item);
    }
    //console.log(Datas);
    saveData(Datas,obj => {
        res.send(JSON.stringify(obj));
    });
})
app.listen(9000);
console.log('服务器运行中.............');


function saveData(Datas, fn) {
    // let obj = {};
    readData(Datas, (Arr, obj) => {
        Arr.push(Datas);
        fs.writeFile("./data.txt", JSON.stringify(Arr), 'utf-8', err => {
            if (!err) {
                obj.code = '201';
                obj.msg = 'ok';
                obj.data =Datas.uname;
            } else {
                obj.code = '506';
                obj.msg = '服务器错误';
            }
            fn(obj);
        })
    })
}
function readData(Datas, fn) {
    let Arr = [];
    let obj = {};
    fs.readFile('./data.txt', 'utf-8', (err, data) => {

        if (!err) {
            //console.log(data);
            if (JSON.parse(data).length !== 0) {
                Arr = JSON.parse(data);

            }
            //console.log(data);
            for (let item of JSON.parse(data)) {
                //console.log(item)
               // console.log(item,JSON.parse(data));
                if (item.uname === Datas.uname) {
                    console.log('bbb');
                    obj.code = '406'
                    obj.msg = '您输入的用户名已存在。。';

                    break;
                } else {
                    Arr = JSON.parse(data);
                    console.log("已存在",Datas.uname,item.uname)
                }

            }
            
        }else{
            console.log('1111111');
        }
        fn(Arr, obj);
    })
}

关于post,get 的分别操作

let express = require('express');           // 导入库;
let bodyParser = require('body-parser');        // 导入库;
let fs = require('fs');
let app = express();        // 返回一个对象

const PORT = 3000;


//参数说明:next是一个函数
app.use((req,res,next) => {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    res.header('Access-Control-Allow-Methods', '*');
    res.header('Content-Type', 'application/json;charset=utf-8');
    next();     // 调用;
})

//bodyParser解析 表单/字符串样式
app.use(bodyParser.urlencoded({ extended: true })); // for parsing (application/x-www-form-urlencoded)
app.use(bodyParser.json()); // for parsing (application/json)

// // get 请求;
// app.get('/register',(req,res) => {
//     // // 获取get请求的数据,第一种方法;
//     // let myData = req.url
//     // decodeURI()          // 解决中文乱码
//     // 第二种方法;返回的是一个对象;
//     let myData = req.query;
//     console.log(myData);
//     res.send(JSON.stringify(myData));
//     // res.send('{"msg":"响应前端的数据"}');
// })

// POST 请求;注册用户;
app.post('/register',(req,res) => {
    let myData = req.body;
    saveItem(myData,obj => {
        res.send(JSON.stringify(obj));
    });
})

// 登录;
app.post('/login',(req,res) => {
    let myData = req.body;
    logItem(myData,obj => {
        res.send(JSON.stringify(obj));
    })
})

// 获取信息;
app.post('/search',(req,res) => {
    let myData = req.body;
    searchItem(myData,obj => {
        res.send(JSON.stringify(obj));
    })
})

app.listen(PORT);
console.log(`Server is running on ${PORT}`);

// 保存数据;
function saveItem(myData,fn){
    let obj = {};
   
    // 读数据;
    readItem(myData,(dataArr,readObj) => {
        console.log(readObj);
        if(readObj.code === '406'){
            fn(readObj);
        }else{
            dataArr.push(myData);
            fs.writeFile('./data/mydata.txt',JSON.stringify(dataArr),'utf-8',err => {
                if(!err){
                    obj.code = '201';
                    obj.msg = 'ok';
                    obj.data = myData.username;
                }else{
                    obj.code = '506';
                    obj.msg = '服务器错误';
                }
                fn(obj);
            })
        }
    });
}

// 登录;
function logItem(myData,fn){
    let obj = {};
    let falg = false;
    fs.readFile('./data/myData.txt','utf-8',(err,data) => {
        if(!err){
            for(let item of JSON.parse(data)){
                if(item.username === myData.username && item.pwd === myData.pwd){
                    obj.code = '201';
                    obj.msg = 'ok';
                    obj.data = myData.username;
                    falg = true;
                    break;
                }else if(item.username === myData.username){
                    obj.code = '407';
                    obj.msg = '密码错误!!!';
                    falg = true;
                    break;
                }
            }
            if(!falg){
                obj.code = '406';
                obj.msg = '用户名不存在。。';
            }
        }else{
            obj.code = '405';
            obj.msg = '用户名不存在。。';
        }
        fn(obj);
    })

}

// 获取个人信息;
function searchItem(myData,fn){
    let obj = {};
    let falg = false;
    fs.readFile('./data/myData.txt','utf-8',(err,data) => {
        if(!err){
            for(let item of JSON.parse(data)){
                if(item.username === myData.username){
                    obj.code = '201';
                    obj.msg = 'ok';
                    obj.data = item;
                    falg = true;
                    break;
                }
            }
            if(!falg){
                obj.code = '406';
                obj.msg = '用户名不存在。。';
            }
        }else{
            obj.code = '405';
            obj.msg = '用户名不存在。。';
        }
        fn(obj);
    })
}

function readItem(myData,fn){
    let itemArr = [];
    let falg = false;
    let obj = {};
    fs.readFile('./data/myData.txt','utf-8',(err,data) => {
        if(!err){
            if(JSON.parse(data).length !== 0){
                itemArr = JSON.parse(data);
            }
            for(let item of JSON.parse(data)){
                console.log(item,myData);
                if(item.username === myData.username){
                    falg = true;
                    obj.code = '406'
                    obj.msg = '您输入的用户名已存在。。';
                    break;
                }
            }
            if(!falg){
                itemArr = JSON.parse(data);
            }
        }else{
            obj.code = '405'
            obj.msg = '您输入的用户名已存在。。。。';
        }
        fn(itemArr,obj);
    })
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值