express的使用

一、搭建编程环境
1.创建项目目录:mkdir myAPP
2.初始化:npm init
3.安装依赖:npm install express -- save
二、代码编辑

// 引入模块
let express = require('express');
var bodyParser = require('body-parser');
let fs = require('fs');
// 调用模块
let app = express();
// 路由分发
//设置头部信息,解决跨域问题
app.use((request, response, next) => {
    response.header('Access-Control-Allow-Origin', '*');
    response.header('Access-Control-Allow-Headers', 'Content-Type');
    response.header('Access-Control-Allow-Methods', '*');
    response.header('Content-Type', 'application/json;charset=utf-8');
    next();//调用 
});
//bodyParser解析 表单/字符串样式
// for parsing application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// for parsing application/json
app.use(bodyParser.json());
// get请求
// 查询请求
app.get('/search', (request, response) => {
    console.log(request.query);
    getName(request, date => {
        response.send(JSON.stringify(date));
    });
});
// post请求
// 登录请求
app.post('/login', (request, response) => {
    // console.log(request.body);
    login(request, result => {
        response.send(JSON.stringify(result));
    });
});
// 注册请求
app.post('/register', (request, response) => {
    // console.log('-----------post start-----------');
    //能够获取到客户端传递过来的数据
    // console.log(request.body);
    // console.log('-----------post  end-----------');
    setData(request, function (obj) {
        response.send(JSON.stringify(obj));
    });
});
// 监听端口
app.listen(3000);
console.log('the server is running......');
// 本地存储数据
function setData(data, fn) {
    let obj = {};
    getData(data, function (brr) {
        brr.push(data.body);
        fs.writeFile('./data.json', JSON.stringify(brr), err => {
            if (!err) {
                obj.code = 202;
                obj.msg = "注册成功!";
            } else {
                obj.code = 501;
                obj.msg = "注册失败";
            }
            fn(obj);
        })
    })
}
// 读取本地数据
function getData(sql, fn) {
    let arr = [];
    fs.readFile('./data.json', 'utf-8', (err, data) => {
        if (!err) {
            //读取成功
            console.log('本地数据:', data);
            arr = JSON.parse(data);
            for (let i = 0; i < arr.length; i++) {
                if (arr[i].username == sql.body.username) {
                    return;
                }
            }
        } else {
            //读取失败
            console.log('读取本地注册信息失败。。。。。。');
        }
        fn(arr);
    })
}
// 登录校验
function login(datas, fn) {
    let obj = {};//响应给前端的对象
    let flag = false;//标识,false 登录失败,true,登录成功
    fs.readFile('./data.json', 'utf-8', (err, data) => {
        if (!err) {
            //读取成功
            console.log('本地数据:', data);
            let arr = JSON.parse(data);
            for (let i = 0; i < arr.length; i++) {
                if (arr[i].username == datas.body.username && arr[i].pwd == datas.body.pwd) {
                    obj.code = 201;
                    obj.msg = '登陆成功';
                    obj.username = datas.body.username;
                    flag = true;
                    break;//结束循环
                }
            }
            if (!flag) {
                obj.code = 502;
                obj.msg = '用户名或密码错误';
            }
        } else {
            //读取失败
            obj.code = 501;
            obj.msg = '用户名不存在';
            console.log('读取本地注册信息失败。。。。。。');
        }
        fn(obj);//执行回调函数
    })
}
// 信息查询
function getName(parm, fn) {
    let flag = false;//默认找不到该用户  false   true  有该用户
    let obj = {};
    fs.readFile('./data.json', 'utf-8', (err, data) => {
        if (!err) {
            //读取成功
            console.log('本地数据:', data);
            let arr = JSON.parse(data);
            for (let i = 0; i < arr.length; i++) {
                if (arr[i].username == parm.query.username) {
                    obj.code = 201;
                    obj.msg = '查询成功';
                    obj.username = parm.query.username;
                    obj.pwd=arr[i].pwd;
                    obj.sex=arr[i].sex;
                    obj.tel=arr[i].tel;
                    obj.address=arr[i].address;
                    flag = true;
                    break;//结束循环
                }
            }
            if (!flag) {
                obj.code = 301;
                obj.msg = '查询的人不存在';
            }
        } else {
            //读取失败
            obj.code = 301;
            obj.msg = '用户名不存在';
            console.log('读取本地注册信息失败。。。。。。');
        }
        fn(obj);//执行回调函数
    })
}

在进行 post方式请求时,引入模块利用body查看参数
三、express应用程序生成器之express-generator脚手架
1.安装脚手架: npm install express-generator -g
2.创建工程应用: express myAPP
3.安装所有依赖包: npm install
4.启动应用: npm start
如果需要新增路由端口则在 app.js文件中进行如下配置即可:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var bookRouter=require('./routes/book');//导入书籍模块
var personRouter=require('./routes/person');
var app = express();
//设置跨域
app.use('*',function(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();
});
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
//在4.16版本之后,body-parser过期,express.json()和express.urlencode()代替
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/book',bookRouter);//配置路由映射关系
app.use('/person',personRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
module.exports = app;
发布了35 篇原创文章 · 获赞 47 · 访问量 8618

猜你喜欢

转载自blog.csdn.net/qq_40665861/article/details/98469389