91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎樣使用Nodejs創建訪問日志記錄的中間件

發布時間:2021-09-24 10:01:37 來源:億速云 閱讀:187 作者:柒染 欄目:web開發

怎樣使用Nodejs創建訪問日志記錄的中間件,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

中間件-訪問日志

目標

利用中間件技術,寫一個用來記錄訪問日志的中間件

中間件

middleware, 中間件一個特殊的url地址處理函數,它被當作 app.use(中間件函數) 的參數或者是某個路由處理函數中使用。

  • 中間件是 express 的最大特色,也是最重要的一個設計。Express是一個自身功能極簡,完全是路由和中間件構成一個web開發框架:從本質上來說,一個Express應用就是在調用各種中間件。【推薦學習:《nodejs 教程》】

  • 一個 express 應用,就是由許許多多的中間件來完成的。

怎樣使用Nodejs創建訪問日志記錄的中間件

中間件的基本使用

// 具名函數格式:
const handler1 = (req, res, next) => {
  console.log(Date.now());
  next();
}
app.use(handler1);
// 匿名函數格式:
app.use((req, res, next) => {
  console.log(Date.now());
  next();
});

說明:中間件函數中有三個基本參數, req、res、next

  • req 就是請求相關的對象,它和下一個中間件函數中的req對象是一個對象

  • res 就是響應相關的對象,它和下一個中間件函數中的res對象是一個對象

  • next 它是一個函數,調用它將會跳出當前的中間件函數,執行后續中間件;如果不調用next,也不執行res.end,則整個請求都會在當前中間件卡住。

思路

  • 應用中間件技術,將每條請求都記錄下來

  • 建立一個.json的文件用來存儲記錄

  • 將數據讀取后放入 .json文件

js實現代碼

const express = require("express");
const app = express();
const fs = require("fs");
// 獲取ip的函數
function getClientIp(req) {
  return (
    req.headers["x-forwarded-for"] ||
    req.connection.remoteAddress ||
    req.socket.remoteAddress ||
    req.connection.socket.remoteAddress
  );
}
// 中間件
app.use((req, res, next) => {
  console.log("時間", new Date());
  console.log("訪問地址", req.url);
  console.log("f訪問ip", getClientIp(req));
  /**
   * 建立一個.json的文件 []
   * 獲取文件內容'[]'==>[]
   * let obj = {time:xxx,url:xxx,ip:xxx}
   * [].push(obj)
   * [].push(obj)覆蓋寫入.json的文件
   */
  fs.readFile("hhhh.json", "utf8", (err, data) => {
    if (err) {
      console.log("文件讀取錯誤", err);
      return;
    }
    let arr = JSON.parse(data);
    //console.log(arr);
    let obj = {};
    obj.time = new Date();
    obj.url = req.url;
    obj.ip = getClientIp(req);
    arr.push(obj);
    console.log(arr);
    let newArr = JSON.stringify(arr);
    fs.writeFile("hhhh.json", newArr, (err) => {
      if (err) {
        console.log("寫入錯誤", err);
      }
    });
  });
  next();
});
// 監聽接口
app.listen(8080, () => {
  console.log("成功,接口是8080");
});

控制臺截圖

怎樣使用Nodejs創建訪問日志記錄的中間件


看完上述內容,你們掌握怎樣使用Nodejs創建訪問日志記錄的中間件的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金湖县| 漾濞| 涪陵区| 高邑县| 黄骅市| 达日县| 平罗县| 仁布县| 东至县| 会泽县| 泗阳县| 若羌县| 开封县| 湛江市| 礼泉县| 乡宁县| 康乐县| 瑞安市| 龙州县| 陇西县| 江城| 遵化市| 永春县| 东明县| 桂林市| 台南县| 榆社县| 灵武市| 壤塘县| 钟祥市| 旺苍县| 屏南县| 河东区| 南投市| 鹤山市| 罗源县| 石家庄市| 灵寿县| 双流县| 昌黎县| 绵阳市|