一、准备工作

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

  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实现后台服务接口的更多相关文章

  1. QQ18年,解密8亿月活的QQ后台服务接口隔离技术

    作者:shane,腾讯后台开发高级工程师 QQ18年 1999年2月10日,腾讯QQ横空出世.光阴荏苒,那个在你屏幕右下角频频闪动的企鹅已经度过了18个年头.随着QQ一同成长的你,还记得它最初的摸样吗 ...

  2. centos7 node express项目 将http接口升级为https接口的解决方法

    1.将对应的ssl证书放到项目文件中(我装的镜像是oneinstack的,创建项目时可以直接选择生成ssl证书的项目,即 xxx.key 和 xxx.crt 文件): 2.修改bin/www文件,修改 ...

  3. node+express 搭建本地服务

    首先,得有node环境,其次建个项目 目录例如  酱紫! 再次 写server.js,当然你可以换个名字a.js .b.js.why.js随你喜欢 var express = require('exp ...

  4. node mysql+node+express 表查询及接口建立(6)

    一.一张表查询 查询一张表在上一章节说过了,查询全部使用*,具体的就写字段名 'SELECT * FROM company' //查询所有使用* 'SELECT * FROM company WHER ...

  5. 使用node+puppeteer+express搭建截图服务

    使用node+puppeteer+express搭建截图服务 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14222807.html 写在之前 一开始我们的需求 ...

  6. 前端用node+mysql实现简单服务端

    node express + mysql实现简单服务端前端新人想写服务端不想学PHP等后端语言怎么办,那就用js写后台吧!这也是我这个前端新人的学习成果分享,如有那些地方不对,请给我指出. 1.准备工 ...

  7. 小白从零开始阿里云部署react项目+node服务接口(二:node服务+web)

    我们用极简的方式来创建服务,没有任何附加功能 1 新建一个server文件夹 2 使用npm init 或者yarn init  一路enter 3  yarn add  express cors  ...

  8. Android : App客户端与后台服务的AIDL通信以及后台服务的JNI接口实现

    一.APP客户端进程与后台服务进程的AIDL通信 AIDL(Android Interface definition language-“接口定义语言”) 是 Android 提供的一种进程间通信 ( ...

  9. Kubernetes实战 - 从零开始搭建微服务 1 - 使用kind构建一个单层架构Node/Express网络应用程序

    使用kind构建一个单层架构Node/Express网络应用程序 Kubernetes实战-从零开始搭建微服务 1 前言 准备写一个Kubernetes实战系列教程,毕竟cnblogs作为国内最早的技 ...

随机推荐

  1. 知其所以然~分布式事务cap

    背景 一致性是一个抽象的.具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义.在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我.我中有你.浑然一体:而在互联网时代,一致性 ...

  2. Linux系统的数据写入机制--延迟写入

    我们都知道,在Linux关机的之前都会要运行一个命令那就是sync,这个命令是同步的意思,那为什么要运行这个?而且之前的数据改变我们已经看见了,为什么还要运行这个命令?要回答这个问题就要说一下Linu ...

  3. LinkedHashMap为什么是有序的(与put先后顺序一致)

    本文版权归 远方的风lyh和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作,如有错误之处忘不吝批评指正! 絮叨絮叨 首先呢,明白一点 LinkedHashMap是HashMap的子类 ...

  4. spring学习(五) ———— 整合web项目(SSM)

    一.SSM框架整合 1.1.整合思路 从底层整合起,也就是先整合mybatis与spring,然后在编写springmvc. 1.2.开发需求 查询商品列表(从数据库中查询) 1.3.创建web工程 ...

  5. 《C#并发编程经典实例》学习笔记—2.3 报告任务

    问题 异步操作时,需要展示该操作的进度 解决方案 IProgress<T> Interface和Progress<T> Class 插一段话:读<C#并发编程经典实例&g ...

  6. 基于C#程序设计语言的三种组合算法

    目录 基于C#程序设计语言的三种组合算法 1. 总体思路 1.1 前言 1.2 算法思路 1.3 算法需要注意的点 2. 三种组合算法 2.1 普通组合算法 2.2 与自身进行组合的组合算法 2.3 ...

  7. React的组件模式

    组件是 React 的核心,因此了解如何利用它们对于创建优秀的设计结构至关重要. 什么是组件 根据 React 官网的介绍,"组件让你可以将 UI 分割成独立的.可重用的部分,并独立管理每个 ...

  8. linux学习笔记-shell-script相关知识

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 一.shell script的执行方法 条件:shell脚本文件必须具备可读可执行权限 1.直接命令执行 (1)使用绝对路径执行 ...

  9. SDOI 2018划水记

    Day0 最后一天啦,此时不颓更待何时? 上午10:15坐车从gryz出发,在一路颓废中到了农大 不得不说,农大的宾馆真的好高档啊,壁橱里面居然有保险柜!电视柜厨子里居然有冰箱!!冰箱里居然有饮料!! ...

  10. js获取地址栏传参

    地址:http://127.0.0.1:8082/prosperleedir/index.html?id=6666&name=prosper#prosper         Location{ ...