开始前确保已经安装node和expressnode
express ***(***你的项目名字) cd *** npm install(下载依赖)
启动项目:运行命令:node ./bin/www
, 3001端口是我本身改的,在/bin/www里面(推荐使用WebStorm运行,由于咱们要用它写代码)数据库
用WebStorm打开项目,点下面这个和命令node ./bin/www做用同样express
也能够在aa.js里面添加app.listen(8088)
,而后运行http://127.0.0.1:8088(端口随便写)npm
app.js(部分代码)json
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的接口segmentfault
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了。api
注意:
一、hostname不能直接用'https://api.weixin.qq.com',要用url.parse( 'https://api.weixin.qq.com').hostname
二、得到oppenId是参数必须拼在链接上。不然会报错:{"errcode":40013,"errmsg":"invalid appid"}
三、若是用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操做数据库连接描述
小白一个,有错轻喷,忘指出session