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);
})
}