node + express學習一(項目搭建)

開始前確保已經安裝node和express

1、初始化項目

express ***(***你的項目名字)
cd ***
npm install(下載依賴)

啓動項目:運行命令:node ./bin/www, 3001端口是我自己改的,在/bin/www裏面(推薦使用WebStorm運行,因爲我們要用它寫代碼)

clipboard.png

2、代碼編寫

用WebStorm打開項目,點下面這個和命令node ./bin/www作用一樣

clipboard.png

也可以在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();
    }
});

小白一個,有錯輕噴,忘指出

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章