搭建簡(jiǎn)易的物聯(lián)網(wǎng)服務(wù)端和客戶端-Nodejs_express服務(wù)(六)

昨天完成了將STM32采集到的溫濕度數(shù)據(jù)傳到服務(wù)端苛聘,存入Mysql數(shù)據(jù)庫(kù)的操作伐谈。今天做的是通過(guò)express連接數(shù)據(jù)庫(kù)够掠,提供接口民褂,讓前端頁(yè)面通過(guò)fetch獲取數(shù)據(jù)。其中遇到了跨域問(wèn)題疯潭,在express中解決了赊堪。
代碼地址:https://github.com/klren0312/stm32_wifi
2017.3.21

搭建簡(jiǎn)易的物聯(lián)網(wǎng)服務(wù)端和客戶端目錄

Express服務(wù)端與前端獲取

1.Express服務(wù)端代碼

1)連接數(shù)據(jù)庫(kù)(前面已經(jīng)有介紹了)

var mysql = require('mysql');
//數(shù)據(jù)庫(kù)配置
var conn = mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'root',
    database:'nodemysql',
    port:3306
});
//連接數(shù)據(jù)庫(kù)
conn.connect();

2)Express跨域解決

解決了前端的已攔截跨源請(qǐng)求:同源策略禁止讀取位于 http://127.0.0.1:3000/mysql 的遠(yuǎn)程資源。(原因:CORS 頭缺少 'Access-Control-Allow-Origin')竖哩。錯(cuò)誤

//設(shè)置所有路由無(wú)限制訪問(wèn)哭廉,不需要跨域
app.all('*',function(req,res,next){
    res.header("Access-Control-Allow-Origin","*");
    res.header("Access-Control-Allow-Headers","X-Requested-With");
    res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By",'3.2.1');
    res.header("Content-Type","application/json;charset=utf-8");
    next();
})

3)路由配置(提供接口)

兩個(gè)接口,分別是溫度和濕度數(shù)據(jù)相叁。提供最新的五個(gè)數(shù)據(jù)

app.get('/tem',function(req,res){
    var tem = [];
    conn.query('SELECT * FROM env',function(err,rows,fields){
        var i  = rows.length;
        var i = rows.length;
        var j =i-5;
        var c= 0;
        while(j < i ){
            tem[c] = rows[j].tem;
            c++;
            j++;
        }
        res.send(JSON.stringify(tem));
    })
})
//濕度
app.get('/hum',function(req,res) {
    var hum = [];
    conn.query('SELECT * FROM env',function(err,rows,fields){
        var i = rows.length;
        var j =i-5;
        var c= 0;
        while(j<i){
            hum[c] = rows[j].hum;
            c++;
            j++;
        }
        res.send(JSON.stringify(hum));
    }) 
});

4)express服務(wù)器配置

設(shè)置端口為3000

//端口:3000
var server = app.listen(3000,function(){
    var host = server.address().address;
    var port = server.address().port;

    console.log(host + "  " + port);
})

2.前端代碼

使用fetch取代ajax(fetch與XMLHttpRequest(XHR)類(lèi)似遵绰,fetch()方法允許你發(fā)出AJAX請(qǐng)求。區(qū)別在于Fetch API使用Promise增淹,因此是一種簡(jiǎn)潔明了的API椿访,比XMLHttpRequest更加簡(jiǎn)單易用。)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsonptest</title>
</head>
<body>
    <script>
        function status(response){
            if(response.status>=200 && response.status<300){
                return Promise.resolve(response);
            }
            else{
                return Promise.reject(new Error(response.statusText));
            }
        }
        function json(response){
            return response.json();
        }
        //設(shè)置接口地址
        fetch("http://127.0.0.1:3000/tem")
        .then(status)
        .then(json)
        .then(function(data){
            console.log("請(qǐng)求成功虑润,JSON解析后的響應(yīng)數(shù)據(jù)為:",data);
        })
        .catch(function(err){
            console.log("Fetch錯(cuò)誤:"+err);
        });
    </script>
</body>
</html>

3.結(jié)果截圖

1)postman請(qǐng)求溫度截圖


tem

2)postman請(qǐng)求濕度截圖


hum.png

3)前端fetch獲取到的溫度數(shù)據(jù)截圖

QQ截圖20170321205801.png

@治電小白菜 20170321

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末成玫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拳喻,更是在濱河造成了極大的恐慌哭当,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗澈,死亡現(xiàn)場(chǎng)離奇詭異钦勘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)亚亲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)个盆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脖岛,“玉大人,你說(shuō)我怎么就攤上這事颊亮〔癜穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵终惑,是天一觀的道長(zhǎng)绍在。 經(jīng)常有香客問(wèn)我,道長(zhǎng)雹有,這世上最難降的妖魔是什么偿渡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮霸奕,結(jié)果婚禮上溜宽,老公的妹妹穿的比我還像新娘。我一直安慰自己质帅,他們只是感情好适揉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著煤惩,像睡著了一般嫉嘀。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上魄揉,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天剪侮,我揣著相機(jī)與錄音,去河邊找鬼洛退。 笑死瓣俯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兵怯。 我是一名探鬼主播彩匕,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摇零!你這毒婦竟也來(lái)了推掸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驻仅,失蹤者是張志新(化名)和其女友劉穎谅畅,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體噪服,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡毡泻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粘优。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仇味。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡呻顽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出丹墨,到底是詐尸還是另有隱情廊遍,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布贩挣,位于F島的核電站喉前,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏王财。R本人自食惡果不足惜卵迂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绒净。 院中可真熱鬧见咒,春花似錦、人聲如沸挂疆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)囱嫩。三九已至恃疯,卻和暖如春漏设,著一層夾襖步出監(jiān)牢的瞬間墨闲,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工郑口, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸳碧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓犬性,卻偏偏與公主長(zhǎng)得像瞻离,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乒裆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容