Node+express+mysql实现后台服务接口

一、准备工作

  创建代码目录,依次执行以下操作

  1.(若没有安装过)安装node

  2.npm init(package.json)

  3.安装express(请求)npm install express –save

二、编码

  1. http封装。http.js代码如下:

const express = require('express')
const app = express()

// 设置跨域
app.all('*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Headers', 'X-Requested-With')
  res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
  res.header('X-Powered-By', '3.2.1')
  res.header('Content-type', 'application/json;charset=utf-8')
  next()
})

// exports.app
module.exports = app

2. 模拟数据。这里先采用构造json数据结构的方式,resultData.js代码如下:

const express = require('express')
const app = express()

// 设置跨域
app.all('*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*')
  res.header('Access-Control-Allow-Headers', 'X-Requested-With')
  res.header('Access-Control-Allow-Methods', 'PUT,POST,GET,DELETE,OPTIONS')
  res.header('X-Powered-By', '3.2.1')
  res.header('Content-type', 'application/json;charset=utf-8')
  next()
})

// exports.app
module.exports = app

3. 写接口。server1.js代码如下

const app1 = require('./http')
const res1 = require('./data')
console.log(app1)
// 接口1
app1.get('/getTest1', (req, res) => {
  res.status(200)
  res.json(res1)
})

// 配置服务端口
const server = app1.listen(3000, () => {
  const host = server.address().address
  const port = server.address().port
  console.log('Listen at http://%s:%s', host, port)
})

4.运行。

3个文件相关路径自己视情况配置。运行server1.js文件开启服务,node server1.js   

此时打开浏览器,在地址栏输入http://localhost:3000/getTest1,可以看到接口返回的结果。

三、扩展连接数据库 mysql

  1.安装。npm install mysql -S

  2.引入mysql。另外req.body需要对表单数据进行解析,所以还需引入body-parser

   mysql.js如下:

// 创建数据库链接
const mysql = require('mysql')
// 注意隐私
const conn = mysql.createConnection({
  host: 'XXX',
  user: 'XXX',
  password: 'XXX',
  database: 'XXX'
})

// 注册 解析表单的body-parser
// const bodyParser = require('body-parser')
// conn.use(bodyParser.urlencoded({extended:false}))
module.exports = conn

sqlName.js如下:(封装连接的每张表的表名)

function sqls() {
    this.GETALL_SQL_USERINFO = 'SELECT * FROM userinfo'
    this.GETLIST_SQL_MASTERINFO = 'SELECT * FROM masterinfo'
    this.GETALL_SQL_MASTERINFO = 'select * from masterinfo where isdelete=0'
    this.GETBYID_SQL_MASTERINFO = 'select * from masterinfo where id=?'
}
module.exports = sqls

3.编写接口   同时封装返回的mess提示:   suc_result   和  err_result

    server.js如下:

/* document.all.filter(e => {
    return e.style.font-family.toLowerCase().indexOf('yahei') > -1 || e.style.font-family.toLowerCase().indexOf('雅黑') > -1
}) */

const conn1 = require('./mysql')
const sqlsName = require('./sqlName')
const app = require('./http')

// 注册 解析表单的body-parser
const bodyParser = require('body-parser')
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false}))
// parse application/json
app.use(bodyParser.json());

// 配置服务端口
const server = app.listen(3000, () => {
    const host = server.address().address
    const port = server.address().port
    console.log('Listen at http://%s:%s', host, port)
})
 
const sqlObj = new sqlsName()

//成功的返回
const suc_result = {
    "code": 0,
    "status": "200",
    "message": "success", 
}

// 失败返回
const err_result = {
    "code": 1,
    "status": "200",
    "message": "查询失败", 
}

// 查询所有的字典表
app.get('/master/getAll', (req, res) => {
    const sql = sqlObj.GETLIST_SQL_MASTERINFO
    conn1.query(sql, (err, result) => {
        if (err){
            return res.json(err_result)
        } else{
            suc_result.data = result
            return res.json(suc_result)
        } 
    })
})
 
// 查询所有的用户
app.get('/user/getAll', (req, res) => {
    const sql = sqlObj.GETALL_SQL_USERINFO
    conn1.query(sql, (err, result) => {
        if (err){
            return res.json(err_result)
        } else{
            suc_result.data = result
            return res.json(suc_result)
        } 
    })
})







// getById
app.get('/api/getById', (req, res) => {
    const id = req.query.id
    const sqlStr = sqlObj.GETBYID_SQL_MASTERINFO
    conn1.query(sqlStr, id, (err, results) => {
        if(err) return res.json({err_code: 1, msg: '获取数据失败', affectedRows: 0})
        if(results.length !== 1) return res.json({err_code: 1, msg: '数据不存在', affectedRows: 0})
        res.json({
           err_code: 1,
           msg: results[0],
           affectedRows: 0
        })
    })
})

这里只列举了两个查询接口,其他接口暂不赘述。

同理,运行: node server.js 

调用接口,可以看到成功结果

 

最后为了方便大家的沟通与交流请加QQ群: 625787746

请进QQ群交流:【IT博客技术分享群①】:https://jq.qq.com/?_wv=1027&k=DceI0140

猜你喜欢

转载自blog.csdn.net/qq_41646249/article/details/117956867