API接口开发日记

之前做了一个商城的demo,当时是用的别人接口,用的人比较多,经常就挂了,我就寻思自己开发一下这个接口自用,

主要技术栈很简单,就是node+express就行了,当然你还需要会一点mysql!

爬取数据

爬取原接口数据:Node 爬取数据到数据库练习

代码都在这里了。我之前就爬取下来了。放进数据库。

编写接口代码

这个也没什么好说的,就是运用动态路由,示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
var express = require('express');
var router = express.Router();
let sqlQuery = require("./mysql")

router.get('/',async function(req,res){
let iid = req.query.iid
let sqlStr = `select data from detail where iid = ?`
let result = await sqlQuery(sqlStr,iid)
result = JSON.parse(result[0].data)
res.send(result)
})
module.exports = router;

这里我封装了一下数据库查询语句,封装的 sqlquery 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
let mysql = require('mysql')

let sqlOptions = {
host: 'localhost',
port: '3306',
user: 'root',
password: '123456',
database: 'mall'
}
// 创建连接
let con = mysql.createConnection(sqlOptions)
con.connect(err=>{
if(err){
console.log('错误信息:'+err);
}else{
console.log('数据库连接成功');
}
});

function sqlQuery(strSql,arr){
return new Promise((resolve,reject) =>{
con.query(strSql,arr,(err,results)=>{
if(err){
reject('错误信息:'+err)
}else{
resolve(results)
}
})
})
}
module.exports = sqlQuery

在云服务器上部署node项目

我使用的是阿里云的ECS云服务器+宝塔面板。

首先将所有文件上传到服务器中:我上传的位置:/www/wwwroot/mallAPI

image-20200505160142160

然后我们在软件商店安装一个pm2:

image-20200505160238425

打开它,分别填入根目录和启动文件,添加项目,并启动。

image-20200505160349822

然后点击映射,填入你的域名,添加反向代理:

image-20200505160523376

这样就部署好了。

踩坑记录

从数据库中取出json数据

在爬取数据的时候,我直接把JSON数据放进了data字段中,在取出的时候,我们实际得到的是这样一个对象:

47e572d6e2ca9933e1de7ea75d72039

所以我们需要对这个数据简单处理:

1
2
3
4
let sqlStr = 'select data from home_multidata'
let result = await sqlQuery(sqlStr)
result = JSON.parse(result[0].data)
res.send(result)

如果不处理,我们是得不到想要的JSON数据的,直接给你返回的是这样一个鬼东西:

node项目需要安装依赖

明明上传了项目,但是在pm2管理器部署,总是不成功,可能是依赖问题。我上传的时候没有上传 node-modules 文件夹,因为这个文件实在是又臭又长。

我们直接使用Xshell或者宝塔终端或者其他什么都可以,连接到服务器,切换到项目目录,安装依赖就好,这里依然还是推荐淘宝镜像:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

然后:

1
cnpm install

开发完成

到这里我们的API接口就开发完成了。看看效果:

image-20200505161721715

image-20200505161700833

代码地址

api代码地址:mallAPI

------ 本文结束  感谢阅读 ------