开始前确保已经安装node和express
1、初始化项目
express ***(***你的项目名字)
cd ***
npm install(下载依赖)
启动项目:运行命令:node ./bin/www
, 3001端口是我自己改的,在/bin/www里面(推荐使用WebStorm运行,因为我们要用它写代码)
2、代码编写
用WebStorm打开项目,点下面这个和命令node ./bin/www作用一样
也可以在aa.js里面添加app.listen(8088)
,然后运行http://127.0.0.1:8088(端口随便写)
app.js(部分代码)
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
app.use('/', indexRouter);
// 这里表示访问http://127.0.0.1:8088/users就是访问
app.use('/users', usersRouter);
app.listen(8088)
module.exports = app;
在routes/users里面添加如下代码,写一个通过code获得微信oppenId的接口
var http = require('https');
var url = require('url');
var appId = '你的appaId';
var sessionKey = '你的sessionKey';
/**
* 获得oppenId
*/
router.post('/getOppenId', function (req, res, next) {
var data = {
};
data = JSON.stringify(data);
var opt = {
// hostname:'https://api.weixin.qq.com',
hostname: url.parse( 'https://api.weixin.qq.com').hostname,
method:'get',
path:`/sns/jscode2session?appid=${appId}&secret=${sessionKey}&js_code=${req.body.code}&grant_type=authorization_code`,
headers:{
"Content-Type": 'application/json',
"Content-Length": data.length
}
}
let respon = res;
var body = '';
var req = http.request(opt, function(res) {
res.on('data',function(data){
body += data;
}).on('end', function(){
respon.json({"data": JSON.parse(body)});
});
}).on('error', function(e) {
console.log("error: " + e.message);
})
req.write(data);
req.end();
});
这样就可以通过http://127.0.0.1:8088/users/getOppenId获得oppenId了。
注意:
1、hostname不能直接用'https://api.weixin.qq.com',要用url.parse( 'https://api.weixin.qq.com').hostname
2、获得oppenId是参数必须拼在连接上。否则会报错:{"errcode":40013,"errmsg":"invalid appid"}
3、如果用var http = require('http')
会出现错误:{"errcode":43003,"errmsg":"require https hint: [gyW4pa0803re59]","expires_in":null}
,不知道是应为我调用改的第三方接口是https还是什么,没有试过
*直接这样去让别个调用的话可能会出现跨域,在app.js里面加上如下代码解决跨域;
app.all('*',function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (req.method == 'OPTIONS') {
// res.send(200); /让options请求快速返回/
res.sendStatus(200)
}
else {
next();
}
});
下一篇sequelize操作数据库链接描述
小白一个,有错轻喷,忘指出