Node+express实现后台服务接口
一、准备工作
创建代码目录,依次执行以下操作
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数据结构的方式,data.js代码如下:
const res = [{
data:213,
num:444,
age:12
}, {
data:456,
num:678,
age:13
}]
module.exports = res
3.写接口。demo1.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个文件相关路径自己视情况配置。运行demo1.js文件开启服务,node ./demo1/demo1.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
sql.js如下:
function sqls() {
this.GETALL_SQL_NODETEST = 'select * from nodeTest where isdelete=0'
this.GETBYID_SQL_NODETEST = 'select * from nodeTest where id=?'
}
module.exports = sqls
3.编写接口
demo2.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 sqls = require('./sql')
const app = require('../http')
// 注册 解析表单的body-parser
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended:false}))
// 配置服务端口
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 sqls()
// getAll
app.get('/api/getAll', (req, res) => {
const sql = sqlObj.GETALL_SQL_NODETEST
console.log(sql)
conn1.query(sql, (err, result) => {
console.log(result)
if (err) return res.json({err_code: 0, msg: '查询失败', affectedRows: 0})
res.json({
err_code: 1, msg: result, affectedRows: 0
})
})
})
// getById
app.get('/api/getById', (req, res) => {
const id = req.query.id
const sqlStr = sqlObj.GETBYID_SQL_NODETEST
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
})
})
})
这里只列举了两个查询接口,其他接口暂不赘述。同理,运行demo2.js,调用接口,可以看到成功结果。
四、遇到的一些问题
1.SyntaxError: Unexpected token export
原因:export default res
Node和浏览器端所支持的模块规范不同
解决方法:module.exports = res
Node+express实现后台服务接口的更多相关文章
- QQ18年,解密8亿月活的QQ后台服务接口隔离技术
作者:shane,腾讯后台开发高级工程师 QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗 ...
- centos7 node express项目 将http接口升级为https接口的解决方法
1.将对应的ssl证书放到项目文件中(我装的镜像是oneinstack的,创建项目时可以直接选择生成ssl证书的项目,即 xxx.key 和 xxx.crt 文件): 2.修改bin/www文件,修改 ...
- node+express 搭建本地服务
首先,得有node环境,其次建个项目 目录例如 酱紫! 再次 写server.js,当然你可以换个名字a.js .b.js.why.js随你喜欢 var express = require('exp ...
- node mysql+node+express 表查询及接口建立(6)
一.一张表查询 查询一张表在上一章节说过了,查询全部使用*,具体的就写字段名 'SELECT * FROM company' //查询所有使用* 'SELECT * FROM company WHER ...
- 使用node+puppeteer+express搭建截图服务
使用node+puppeteer+express搭建截图服务 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14222807.html 写在之前 一开始我们的需求 ...
- 前端用node+mysql实现简单服务端
node express + mysql实现简单服务端前端新人想写服务端不想学PHP等后端语言怎么办,那就用js写后台吧!这也是我这个前端新人的学习成果分享,如有那些地方不对,请给我指出. 1.准备工 ...
- 小白从零开始阿里云部署react项目+node服务接口(二:node服务+web)
我们用极简的方式来创建服务,没有任何附加功能 1 新建一个server文件夹 2 使用npm init 或者yarn init 一路enter 3 yarn add express cors ...
- Android : App客户端与后台服务的AIDL通信以及后台服务的JNI接口实现
一.APP客户端进程与后台服务进程的AIDL通信 AIDL(Android Interface definition language-“接口定义语言”) 是 Android 提供的一种进程间通信 ( ...
- Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序
使用kind构建一个单层架构Node/Express网络应用程序 Kubernetes实战-从零开始搭建微服务 1 前言 准备写一个Kubernetes实战系列教程,毕竟cnblogs作为国内最早的技 ...
随机推荐
- Python爬虫入门教程 7-100 蜂鸟网图片爬取之二
蜂鸟网图片--简介 今天玩点新鲜的,使用一个新库 aiohttp ,利用它提高咱爬虫的爬取速度. 安装模块常规套路 pip install aiohttp 运行之后等待,安装完毕,想要深造,那么官方文 ...
- React Native (二) ios打包到真机
每当在模拟器上完成了开发,都想到真机上试试,正好前段时候淘了一个imac. 这里就以打包rndemo到iphone为例,讲一下react ntive ios打包到真机的流程. 一.前置 1.有个iph ...
- HBase学习-HBase原理
1.系统架构 1.1 图解 从HBase的架构图上可以看出,HBase中的组件包括Client.Zookeeper.HMaster.HRegionServer.HRegion.Store.MemS ...
- Config安全控制
1.config server引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <a ...
- GBDT 算法:原理篇
本文由云+社区发表 GBDT 是常用的机器学习算法之一,因其出色的特征自动组合能力和高效的运算大受欢迎. 这里简单介绍一下 GBDT 算法的原理,后续再写一个实战篇. 1.决策树的分类 决策树分为两大 ...
- 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(9)- KBOOT特性(IntegrityCheck)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之完整性检测(Integrity Check)特性. Application完整性检测是非常 ...
- Java并发专题(二)线程安全
前言 随着时代的发展,CPU核数的增加和计算速度的提升,串行化的任务执行显然是对资源的极大浪费,掌握多线程是每个程序员必须掌握的技巧.但是同时多线程也是一把双刃剑,带来了共享资源安全的隐患.在本节会介 ...
- Linux之安装常用软件
Linux下安装软件的方法: 1,rpm(不推荐使用) 2,yum安装(使用快捷方便) 3,编译安装 一.安装python3(这里使用的是编译安装) 1,下载python3源码包 在centos下,第 ...
- CAN总线学习记录之二:系统结构与帧结构
CAN总线系统结构 CAN 控制器 接收控制单元中微处理器发出的数据,处理数据并传给 CAN 收发器 CAN 收发器 将数据传到总线 or 从总线接收数据给 CAN 控制器 CAN 数据传递终端 避 ...
- Linux常用命令详解(week1_day1_3)--技术流ken
本节内容 pidofpstopipuptimewgetcurltrddtargrepfind 命令详解 1.pidof 获取正在运行程序的PID 实例1: [root@ken ~]# pidof ss ...