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().addressconst port = server.address().portconsole.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().addressconst port = server.address().portconsole.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_MASTERINFOconn1.query(sql, (err, result) => {if (err){return res.json(err_result)} else{suc_result.data = resultreturn res.json(suc_result)} })
})// 查询所有的用户
app.get('/user/getAll', (req, res) => {const sql = sqlObj.GETALL_SQL_USERINFOconn1.query(sql, (err, result) => {if (err){return res.json(err_result)} else{suc_result.data = resultreturn res.json(suc_result)} })
})// getById
app.get('/api/getById', (req, res) => {const id = req.query.idconst sqlStr = sqlObj.GETBYID_SQL_MASTERINFOconn1.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
Node+express+mysql实现后台服务接口相关推荐
- node+express+mysql开发后台接口
技术栈:node.express.mysql.postman(接口调试软件).sequelize(数据库映射模型).sequelize-auto(自动生成数据库映射模型).apidoc(注释语法生成 ...
- node + express + mysql 搭建后台
基础配置 入口文件app.js var express = require('express'); var app = express(); var bodyParser = require('bod ...
- QQ18年,解密8亿月活的QQ后台服务接口隔离技术
QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗? 1999年:腾讯QQ的前身OICQ诞生 ...
- node + express + sequelize + apidoc 后台初始化
技术栈:express-generator + sequelize + apidoc 一.创建应用骨架: express官网 1. 创建文件夹,名称为:express 2. cd到express文件夹 ...
- node+express+mysql搭建一个系统
1.使用express创建项目 参考连接 NodeJS+express如何新建一个自己需要的项目 1.安装exprss $npm install express -g $npm install exp ...
- php sequelize,node,express_sequelize 联合查询,node,express,mysql,sequelize - phpStudy
sequelize 联合查询 我用sequelize 联合查询 db.user.hasMany(db.bbsuser,{foreignKey:'userId'}); db.bbsuser.belong ...
- 记录 vue项目打包放入 hbuilder 做app真机测试时 无法请求后台服务接口
1.因为发布app时 vue开发模式下配置的跨域是无效的,打包后会找不到接口 例如下面是之前的错误版: '/propertyCmsAPI': {target: 'http://192.168.1.11 ...
- 腾讯技术分享:微服务接口设计原则
来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...
- mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)
点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...
最新文章
- Cannot resolve method 'getParameter( )'
- python 线程锁 共享全局变量 线程通信
- IT人士必备五大绿色健康生活用品
- html保存blob,HTML文本图像并保存为Blob到数据库
- 服务器e5系列和e5v4系列,“芯”力量:四款至强E5 v4双路服务器横评
- u3d资源打包只能打包场景材质,不能打包脚本
- java 命令行参数 _java命令行参数
- 容器编排技术 -- AWS EC2快速入门
- 部署点评Cat监控项目(转)
- 滴滴自研分布式NoSQL数据库Fusion的演进之路
- Windows xp 驱动EPSON MT532打印小票始末
- STM32F1xx_StdPeriph_Driver——I2C
- [原创]战国的杀人机器白起
- 不管你学的是什么专业,你都应该多少懂些 (来自qq空间)(分享)(转载)
- Java实现给PDF每页右上角添加图片水印
- vs单步调试及断点调试基本介绍
- 火车头采集器 采集https网站 以及网站cookie 避免 蜘蛛 爬虫 程序等
- 理解Profiles, Services,Characteristics,UUID等值
- Orleans 2.0 官方文档 —— 4.8.1 Grains - Grain持久化 - grain持久化的目标
- 深度解析企业OA办公系统的好处有哪些?
热门文章
- pyspark--中位数计算
- mysql source 报错 Unknown command ‘\‘‘ 解决办法(本人的第一个博客嘿嘿)
- iOS底层原理之dyld应用程序加载
- python抢茅台_python实现简单淘宝秒杀功能
- ThinkPHP3.2.3新特性之:数据库设置
- 计算机二级报名时间2020年12月江苏省,江苏省本省市2020上半年计算机二级报名时间|网上报名入口【12月17日12时开通】...
- 汉王科技持续走下坡路,发展寻求突破
- 多个随机变量运算后的均值与方差计算
- 易快报创始人兼CEO马春荃:做企业费控报销领域的“无人驾驶”
- 一张图弄明白:从零维到十维空间