server.js
//安装express 框架 npm install express --save
//body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
//cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。
//multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据。
const express=require('express');
//引入用户路由器
const userRouter=require('./Router/userRouter.js');
const indexRouter=require('./index.js');
//引入body_parser模块
const bodyParser=require('body-parser')
//跨域
// const cors = require("cors");
// server.use(cors());
//后台处理跨域
// server.use(cors({
// origin:["http://127.0.0.1:8050","http://localhost:8050"],
// credentials:true
// }))
//创建服务器
var server=express();
//监听端口
server.listen(8050);
console.log('服务器开启!!!')
//托管静态资源到
server.use(express.static('public'));
//解析post数据为对象
server.use(bodyParser.urlencoded({
extended:false
}));
//将用户模块路由器 装载到/user下
server.use('/user',userRouter);
server.use('/',indexRouter);
userRouter.js
//mysql驱动
const mysql = require("mysql");
//配置数据库连接池:提高数据效率
// var connection = mysql.createConnection({
// host : 'localhost',
// port :'3306',
// user : 'root',
// password : '123456',
// database : 'zy'
// });
// 连接
/*connection.connect(function (err) {
if (err) {
console.log('[query] - :' + err);
return;
}
console.log('[connection connect] succeed!');
});
// 查询数据
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});*/
// connection.connect();
//创建路由器
const express = require('express');
var Router = express.Router();
//添加路由
//不用中间件的话可以这样写 跨域
Router.all('*', function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type,Content-Length, //Authorization, Accept,X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
if(req.method=="OPTIONS") res.send(200);/*让options请求快速返回*/
else next();
})
//用户登录路由s
//url:/login method:post
Router.get('/login', function (req, res) {
// var obj = req.body;
// console.log(req.query)
res.send( {
"data":req.query,
"code": 200
})
//执行SQL语句,查看是否登录成功(使用用户名和密码两个条件能查询到数据)
// let $uname=zzy;
// connection.query('SELECT * FROM t_user', function (error, results, fields) {
// if (error) throw error;
// res.send( {
// "msg": results,
// "code": 200
// })
// });
});
//测试
Router.get("/getData", (req, res) => {
let mobile=req.query.mobile;
let pwd=req.query.pwd;
if(mobile=="aaa"&&pwd==123){
var parsem = {
"msg":{
uname:"aaa",
upwd:123
},
"status":1,
"code": 200
}
res.send(parsem)
}else{
res.send({
"msg":"不存在用户或者密码错误",
"code":200,
"status":0
})
}
//res.send(JSON.stringify(parsem))
//console.log(JSON.parse(parsem))
res.send(parsem)
})
Router.post("/loginSetItem", (req, res) => {
console.log(
JSON.parse(req.body)
)
let _user = req.user
let _token = req.token
res.send({
code: '200',
user: _user,
token: _token
})
})
//get catch https://www.cnblogs.com/tugenhua0707/p/10807289.html
const url = require('url');
const fs = require('fs');
const mime = require('mime');
import path from 'path';
Router.get("/catch", (req, res) => {
// 获取文件名
const { pathname } = url.parse(req.url, true);
// 获取文件路径
const filepath = path.join(__dirname, pathname);
//设置协商缓存
fs.stat(filepath, (err, stat) => {
if (err) {
res.end('not found');
} else {
// 获取 if-modified-since 这个请求头
const ifModifiedSince = req.headers['if-modified-since'];
// 获取最后修改的时间
const lastModified = stat.ctime.toGMTString();
// 判断两者是否相等,如果相等返回304读取浏览器缓存。否则的话,重新发请求
if (ifModifiedSince === lastModified) {
res.writeHead(304);
res.end();
} else {
res.setHeader('Content-Type', mime.getType(filepath));
res.setHeader('Last-Modified', stat.ctime.toGMTString());
// fs.createReadStream(filepath).pipe(res);
}
}
});
})
//导出路由器
module.exports = Router;