欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

express提供http服務(wù)功能實(shí)現(xiàn)示例

 更新時(shí)間:2022年10月12日 11:25:25   作者:南方小菜  
這篇文章主要為大家介紹了express提供http服務(wù)功能實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

先看使用

const express = require('./express');
const app = express();
app.get('/',function (req,res){
    res.end('/')
})
app.get('/hello',function (req,res){
    res.end('/hello');
})
app.listen(3000,function () {
    console.log('server start 3000');
})

兩個(gè)功能

  • 執(zhí)行listen方法時(shí)創(chuàng)建服務(wù)
  • 訪問方法符合時(shí),訪問對(duì)應(yīng)路徑,執(zhí)行相應(yīng)回調(diào);均不匹配時(shí),返回固定 404 信息;

實(shí)現(xiàn)思路

注意到express是一個(gè)函數(shù),其返回值是一個(gè)具有listen、get方法的對(duì)象,我們可以在express的入口進(jìn)行定義,從而目光轉(zhuǎn)向?qū)?code>listen、get方法的實(shí)現(xiàn)了

  • listen方法就是對(duì)原生的http模塊的一個(gè)封裝,我們只要在執(zhí)行時(shí)利用原生 node 模塊http創(chuàng)建一個(gè)服務(wù)就可以了
  • get方法和【均不匹配兼容】其實(shí)是一個(gè)路由功能,目前可以先簡單的用一個(gè)隊(duì)列去實(shí)現(xiàn),每次執(zhí)行get等路由方法,就將路徑和對(duì)應(yīng)處理函數(shù)入隊(duì)列,然后在請(qǐng)求來時(shí)進(jìn)行遍歷匹配即可。至于 404 兼容,我們可以在初始化時(shí)就存入一個(gè)處理函數(shù),這樣當(dāng)所有都沒有匹配上時(shí)就執(zhí)行即可

具體實(shí)現(xiàn)

const http = require('http')
const url = require('url')
function createApplication() {
    const router = [
        {
            path: '*',
            method: '*',
            handler(req,res){
                res.end(`Cannot ${req.method} ${req.url}`)
            }
        }
    ]
    return {
        get(path,handler){
            router.push({
                path,
                method: 'get',
                handler
            })
        },
        listen(port,cb){
            let server = http.createServer(function (req,res) {
                let {
                    pathname
                } = url.parse(req.url); // 獲取請(qǐng)求的路徑
                let requireMethod = req.method.toLowerCase();
                for (let index = 1; index < router.length; index++) {
                    const {method,path,handler} = router[index];
                    if(pathname === path && requireMethod === method){
                        return handler(req, res);
                    }
                }
                return router[0].handler(req,res); 
            })
            server.listen(...arguments)
        }
    }
}
module.exports = createApplication

以上就是express提供http服務(wù)功能實(shí)現(xiàn)示例的詳細(xì)內(nèi)容,更多關(guān)于express提供http服務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Node.js報(bào)錯(cuò)信息Error:?Cannot?find?module?'XXX'問題及解決

    Node.js報(bào)錯(cuò)信息Error:?Cannot?find?module?'XXX'問題及解

    這篇文章主要介紹了Node.js報(bào)錯(cuò)信息Error:?Cannot?find?module?'XXX'問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Node.js異步I/O學(xué)習(xí)筆記

    Node.js異步I/O學(xué)習(xí)筆記

    這篇文章主要介紹了Node.js異步I/O學(xué)習(xí)筆記,本文詳細(xì)講解了異步I/O的基本概念、Node的異步I/O、非I/O的異步API、事件驅(qū)動(dòng)與高性能服務(wù)器等內(nèi)容,需要的朋友可以參考下
    2014-11-11
  • 淺析node應(yīng)用的timing-attack安全漏洞

    淺析node應(yīng)用的timing-attack安全漏洞

    本篇文章給大家通過原理的原因分析了node應(yīng)用的timing-attack安全漏洞問題,有興趣的朋友閱讀參考下。
    2018-02-02
  • Node登錄權(quán)限驗(yàn)證token驗(yàn)證實(shí)現(xiàn)的方法示例

    Node登錄權(quán)限驗(yàn)證token驗(yàn)證實(shí)現(xiàn)的方法示例

    這篇文章主要介紹了Node登錄權(quán)限驗(yàn)證token驗(yàn)證實(shí)現(xiàn)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 預(yù)防NodeJS命令注入的方法詳解

    預(yù)防NodeJS命令注入的方法詳解

    Node.js和npm為前端生態(tài)中提供了統(tǒng)一的開發(fā)語言、強(qiáng)大的包管理和模塊生態(tài)系統(tǒng)、靈活的構(gòu)建工具和任務(wù)自動(dòng)化、以及豐富的前端框架和庫等等,本文給大家介紹了如何預(yù)防NodeJS命令注入,文中有詳細(xì)的代碼講解,需要的朋友可以參考下
    2023-12-12
  • node如何將package.json中的包降為低版本或者升級(jí)為高版本

    node如何將package.json中的包降為低版本或者升級(jí)為高版本

    比如現(xiàn)在你用某個(gè)包的當(dāng)前版本,但是你安裝的版本高了,那么你應(yīng)該這么做,首先刪除node項(xiàng)目中的node_modules目錄,防止安裝時(shí)的包不一致,下面給大家介紹node將package.json中的包降為低版本或者升級(jí)為高版本的方法,感興趣的朋友一起看看吧
    2023-11-11
  • Node.js使用Angular簡單示例

    Node.js使用Angular簡單示例

    這篇文章主要介紹了Node.js使用Angular簡單示例,如何在Node.js項(xiàng)目中引入AngularJS,這次提供一個(gè)非常簡單的示例,演示AngularJS里的指令、數(shù)據(jù)綁定、服務(wù)等內(nèi)容。感興趣的小伙伴們可以參考一下
    2018-05-05
  • 關(guān)于npm主版本升級(jí)及其相關(guān)知識(shí)點(diǎn)總結(jié)

    關(guān)于npm主版本升級(jí)及其相關(guān)知識(shí)點(diǎn)總結(jié)

    npm是Node.js默認(rèn)的包管理器,以javascript?編寫的軟件包管理系統(tǒng)用于分享和使用代碼,下面這篇文章主要給大家介紹了關(guān)于npm主版本升級(jí)及其相關(guān)知識(shí)點(diǎn)總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 如何降低node版本,怎樣實(shí)現(xiàn)降低node版本

    如何降低node版本,怎樣實(shí)現(xiàn)降低node版本

    這篇文章主要介紹了如何降低node版本,怎樣降低node版本問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Nodejs技巧之Exceljs表格操作用法示例

    Nodejs技巧之Exceljs表格操作用法示例

    這篇文章主要介紹了Nodejs技巧之Exceljs表格操作用法,結(jié)合實(shí)例形式分析了node.js使用Exceljs操作Excel表格的載人、獲取、遍歷、輸出等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-11-11

最新評(píng)論