開始前確保已經安裝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