一、准备工作
创建代码目录,依次执行以下操作
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