Node+Express+Mysql搭建API接口平台(一)入门篇

Node+Express+Mysql搭建API接口平台(一)入门篇


本地环境

  1. node
  2. npm
  3. express的安装
    全局安装
npm install express -g
npm install -g express-generator
(为什么要有这一步)
4.x版本,把generator分离出来,需要单独安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装mysql
在这里插入图片描述

数据库连接与测试加速

先改写一下代码
删除bin/www
app.js作为启动文件

app.js做出以下改动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

新建数据库

在这里插入图片描述
在这里插入图片描述

在项目的根目录下新建util/dbconfig.js

const mysql = require("mysql")

module.exports = {
    
    
    // 数据库配置
    config: {
    
    
        host: 'localhost',
        port: 3306,
        user: 'root',
        password: 'IKUN1220', // 数据库密码
        database: 'exapp',
    },
    // 连接数据库 使用mysql的连接池的连接方式
    // 连接池对象
    sqlConnect: function (sql, sqlArr, callback) {
    
    
        var pool = mysql.createPool(this.config)
        pool.getConnection((err, conn) => {
    
    
            console.log("12345")

            if (err) {
    
    
                console.log("链接失败")
                return
            }

            // 事件驱动回调
            conn.query(sql, sqlArr, callback)
            // 释放连接
            conn.release()
        })
    }
}

routes/index.js中编写一部分代码

var express = require('express');
var router = express.Router();
var dbConfig = require("../util/dbconfig")
/* GET home page. */
router.get('/', function (req, res, next) {
    
    
  var sql = "select * from cate"
  var sqlArr = []
  var callback = (err, data) => {
    
    
    if (err) {
    
    
      console.log("连接出错了")
    } else {
    
    
      res.send({
    
    
        'list': data
      })
    }
  }
  dbConfig.sqlConnect(sql, sqlArr, callback)
  // res.render('index', { title: 'Express' });
});

module.exports = router;

请求方法的封装

在根目录下新建controllers/cateControl.js

var dbConfig = require("../util/dbconfig")

// 获取分类
geetCate = (req, res) => {
    
    
    var sql = "select * from cate"
    var sqlArr = []
    var callback = (err, data) => {
    
    
        if (err) {
    
    
            console.log("连接出错了")
        } else {
    
    
            res.send({
    
    
                'list': data
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callback)
}

module.exports = {
    
    
    geetCate
}

再次修改router/index.js

var express = require('express');
var router = express.Router();
var cate = require("../controllers/cateController")
/* GET home page. */
router.get('/', cate.geetCate);

module.exports = router;

整理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 app = express();

// 改写
var http = require('http');
var server = http.createServer(app);

app.use(express.urlencoded({
    
     extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);


server.listen("3000");

带参数获取列表

在这里插入图片描述
controllers/cateControl.js中新增以下代码:

// 获取指定分类的文章列表
getPostCate = (req, res) => {
    
    
    let {
    
     id } = req.query;
    var sql = `select * from post where cate_id=?`
    var sqlArr = [id]
    var callback = (err, data) => {
    
    
        if (err) {
    
    
            console.log("连接出错了")
        } else {
    
    
            res.send({
    
    
                'list': data
            })
        }
    }
    dbConfig.sqlConnect(sql, sqlArr, callback)
}

module.exports = {
    
    
    geetCate,
    getPostCate
}

router/index.js中新增以下代码:

router.get('/getPostCate', cate.getPostCate)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45732235/article/details/128447655