一、准备工作

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

  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. 用PMML实现机器学习模型的跨平台上线

    在机器学习用于产品的时候,我们经常会遇到跨平台的问题.比如我们用Python基于一系列的机器学习库训练了一个模型,但是有时候其他的产品和项目想把这个模型集成进去,但是这些产品很多只支持某些特定的生产环 ...

  2. google的GCM推送使用简介

    pom <!-- https://mvnrepository.com/artifact/com.google.gcm/gcm-server --> <dependency> & ...

  3. hadoop2 datanode启动异常解决步骤

    1.datanode起不来2016-11-25 09:46:43,685 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid d ...

  4. SpringMVC学习笔记之一(SpringMVC架构及与Mybatis整合)

    一.SpringMVC入门 1.1Springmvc是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如 ...

  5. Java提高班(五)深入理解BIO、NIO、AIO

    导读:本文你将获取到:同/异步 + 阻/非阻塞的性能区别:BIO.NIO.AIO 的区别:理解和实现 NIO 操作 Socket 时的多路复用:同时掌握 IO 最底层最核心的操作技巧. BIO.NIO ...

  6. [React] react+redux+router+webpack+antd环境搭建一版

    好久之前搭建的一个react执行环境,受历史影响是webpack3.10.0和webpack-dev-server2.7.1的环境,新项目准备用webpack4重新弄弄了,旧的记录就合并发布了(在没有 ...

  7. 什么是平衡二叉树(AVL)

    前言 Wiki:在计算机科学中,AVL树是最早被发明的自平衡二叉查找树.在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树.查找.插入和删除在平均和最坏情况下的时间复杂度都 ...

  8. selinux基本

    TE模型 主体划分为若干组,称为域 客体划分为若干组,每个组称为一个类型   DDT(Domain Definition Table,域定义表,二维),表示域和类型的对应访问权限,权限包括读写执行 一 ...

  9. 第33章 密码学(Cryptography),密钥(Keys)和HTTPS - Identity Server 4 中文文档(v1.0.0)

    IdentityServer依赖于几个加密机制来完成它的工作. 33.1 令牌签名和验证 IdentityServer需要非对称密钥对来签署和验证JWT.此密钥对可以是证书/私钥组合或原始RSA密钥. ...

  10. 转换Word文档为PDF文件

    1.使用 Office COM组件的Microsoft.Office.Interop.word.dll库 该方法需要在电脑上安装Office软件,并且需要Office支持转换为PDF格式,如果不支持, ...