【Web全棧課程7】Node數據交互簡介

Web服務器數據交互:javascript

  1. 返回文件
  2. 處理數據交互請求(GET、POST)
  3. 數據庫交互(後續再講)

1.返回文件

經常使用於response返回數據的方法:setHead,write,writeHead
基於請求文件返回服務器端對應文件,簡單實現以下:html

fs.readFile(`www${req.url}`, (err, data)=> {
    if (err){
        res.writeHead('404'); //設置狀態碼
        res.write('error');
    } else {
        res.write(data);
    }
    res.end();
})

從瀏覽器請求文件時,後端返回了對應的html文件。
image.pngjava

2.處理數據交互請求

get

新建一個簡單的get請求的表單html,提交到咱們本地的node服務器。node

<form  action="http://localhost:8080/aaa"  method="get">
用戶:<input  type="text"  name="user"><br>
密碼:<input  type="password"  name="pass"><br>
<input  type="submit"  value="提交">
</form>

get傳遞的數據在url中,經過node的url模塊,能夠將url解析成對象數據。redis

let obj = url.parse(req.url);

解析後的結果:
image.pngsql

post

和get同樣,新建一個簡單的post請求的表單html。數據庫

<form  action="http://localhost:8080/aaa"  method="get">
…………

post傳輸的數據在body裏面。post的數據傳遞,一個大數據包切成多個小包發送:後端

  1. 大數據包不切塊發送,其餘全部網絡交互被阻塞,須要等待大數據包傳輸完成才能進行。
  2. 傳輸失敗的時候只須要重傳失敗的一小段,速度快。

所以,咱們服務器端能夠監聽收到的每小段數據包,以及發送結束的消息。瀏覽器

let str = '';
// 接收到一個一個分段的數據
req.on('data', data  => {
    str += data;
});
// 結束
req.on('end', () => {
    let post = querystring.parse(str);
    console.log(str, post);
});

解析後的結果:
image.png服務器

url.parse 能夠解析整個url
querystring 解析數據部分

3.數據庫交互

數據庫分類:
關係型數據庫 —— MySQL、Oracle、SQL Server
文件型數據庫 —— sqlite
文檔型數據庫 —— MongoDB

1.關係型數據庫

常見經常使用,數據之間是有關係的

2.文件型數據庫

特色是簡單,輕量級、小巧

3.文檔型數據庫

存儲異構數據,處理速度快,適用於頻繁寫入的數據。

NoSQL 沒有複雜的關係,對性能有極高的要求。
例如redis、memcached、hypertable、bigtable

數據庫操做放在後面結合數據庫一塊兒寫。使用一個內存數據暫存用戶名密碼,學習實現一個簡單的註冊、登陸的node後端,對提交數據進行簡單驗證,返回處理結果。
image.png

相關文章
相關標籤/搜索