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作为国内最早的技 ...
随机推荐
- Lottie 动画里有图片怎么办?设计师小姐姐也能帮你减少开发量!
一.序 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整解决方案,设计师只需要使用 After Effectes (之后简称 AE)设计出动画之后,使用 Lotti ...
- JS 中 原生方法 (四) --- Object
Javascript 中 str. arr.date.obj 等常见的原生方法总结 本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道, ...
- 如何优雅的使用 Angular 表单验证
随便说说,这一节可以跳过 去年参加 ngChine 2018 杭州开发者大会的时候记得有人问我: Worktile 是什么时候开始使用 Angular 的,我说是今年(2018年) 3 月份开始在新模 ...
- msf登陆Windows 2
使用ms17_010(永恒之蓝)进行攻击登陆(XP) 1)加载模块 2)连接靶机 3)设置payload 4)设置lhost(攻击主机IP) 5)exploit进行攻击登陆
- [java]static关键字的四种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...
- JavaScript小实例:拖拽应用(二)
经常在网站别人的网站的注册页中看到一个拖拽验证的效果,就是它的验证码刚开始不出来,而是有一个拖拽的条,你必须将这个拖拽条拖到底,验证码才出来,说了感觉跟没说一样,你还是不理解,好吧,我给个图你看看: ...
- Fiddler无法正常抓取谷歌等浏览器的请求_解决方案
1-先了解Fiddler工作原理: 正常情况下,fiddler是可以抓chrome的请求的. fiddler会自动给浏览器设置一个代理127.0.0.1端口8888,并且记忆浏览器的代理设置,所有的请 ...
- 第一次AOP,附上使用DEMO,可用在简单生产环境了
demo代码如下 public class ConsoleTimeAttribute : ApectBaseAttribute { public override void Before(ApectC ...
- 结合JDK源码看设计模式——简单工厂、工厂方法、抽象工厂
三种工厂模式的详解: 简单工厂模式: 适用场景:工厂类负责创建的对象较少,客户端只关心传入工厂类的参数,对于如何创建对象的逻辑不关心 缺点:如果要新加产品,就需要修改工厂类的判断逻辑,违背软件设计中的 ...
- 【学习笔记】tensorflow队列和线程
目录 Tensorflow队列 同步执行队列 队列管理器 异步执行队列 线程协调器 在使用TensorFlow进行异步计算时,队列是一种强大的机制. 为了感受一下队列,让我们来看一个简单的例子.我们先 ...