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

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

一、初始化項目

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

啓動項目:運行命令:node ./bin/www, 3001端口是我本身改的,在/bin/www裏面(推薦使用WebStorm運行,由於咱們要用它寫代碼)數據庫

clipboard.png

二、代碼編寫

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

clipboard.png

也能夠在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

相關文章
相關標籤/搜索