亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

node.js express框架簡介與實現

2024-05-06 16:53:32
字體:
來源:轉載
供稿:網友

前言

之前學習過node.js接觸過express框架,最近為了編寫一個mock server正好用到了express。下面正好就跟大家介紹一下關于express。

今天的內容主要圍繞這么幾個方面?

  • express框架初步介紹
  • express框架中的app.use和app.get/app.post
  • mock server 介紹
  • mock server的實現思路

一、express框架初步介紹

關于express框架的介紹,這里我引用菜鳥教程的簡介:

Express是一個簡潔而靈活的node.js web框架,提供了一系列強大特性幫助你創建各種web應用,和豐富的HTTP工具。使用Express可以快速地搭建一個完整功能的網站。

1.express框架的特性

  • (1)可以設置中間件來響應HTTP請求;
  • (2)定義了路由表用于執行不同大的HTTP請求動作;
  • (3)可以通過向模板傳遞參數來動態渲染HTML頁面;

2.安裝express

npm install express --save或cnpm install express --save

以下幾個重要需要與express框架一起安裝:

  • body-parser -node.js中間件,用于處理JSON,Raw,Text和URL編碼的數據;
  • cookie-parser -這就是一個解析Cookie的工具。通過req.cookies可以取到傳過來的cookie,并將它們轉為對象;
  • multer - node.js中間件,用于處理enctype=“multipart/form-data”(設置表單mime編碼)的表單數據;

安裝命令如下所示:

npm install body-parser --savenpm install cookie-parser --savenpm install multer --save

3.express的入門程序

node_learning.js代碼如下:

var express = require('express');var app = express();app.get('/', function (req, res) { res.send('Hello World');})var server = app.listen(2019, function () { var host = server.address().address var port = server.address().port console.log("應用實例,訪問地址為 http://127.0.0.1:2019", host, port)})

二、express框架中的app.use和app.get/app.post

app.use和app.get/app.post其實區別如(引用一位朋友說的):

感興趣的可以參考這個鏈接:作者做了試驗測試過的

(1)app.use(path,callback)中的callback既可以是router對象又可以是函數

(2)app.get(path,callback)中的callback只能是函數

app.use和app.get/app.post實現幾乎大同小異,代碼示例如下:

var express = require('express');var app = express();function testUser(req, res, next){ // req 參數可以接受一些請求的參數(req.query/req.body) 和 請求頭信息 // res 用于響應信息 // 調用next()方法則進入下一個中間件 res.send("測試用戶");}function testLogin(req,res,next){ res.send("測試登錄");}var server = app.listen(2019, function () { var host = server.address().address var port = server.address().port console.log("應用實例,訪問地址為 http://127.0.0.1:2019")})//路徑匹配app.use('/user',testUser);app.get('/login',testLogin);

關于node.js的express框架就介紹這么多,最近本人因實現某個插件的功能而需要用到的,這與下面說的mock server有比較大的關系。

三、mock server 介紹

mock server 翻譯過來的意思是模擬服務。

說到這我相信大家就很容易理解了。至于為什么要模擬服務?

比方說現今的業務系統很少有孤立存在的,它們或多或少使用其他公司提供的服務,這給我們聯調和測試造成了比較大的麻煩,對于這種情況,常見的解決方案就是搭建一個mock server,模擬那些服務器,提供數據進行聯調和測試

node.js,express

四、mock server的實現思路

現在google或者being搜索mock server 實現思路肯定有很多,這里我就不再贅述。

這里我以我自己最近的vscode插件開發來說。

我最近的工作是針對Settings-Sync作二次開發

關于settings-sync插件,感興趣的可以參考我的博客園Settings-Sync源碼閱讀

如何實現一個mock server 替換github api地址并確保效果一致?

針對目前這個需求,我的實現思路如下:

  • 第一,針對如何實現一個mock server ,可以復用已有,如mock-github-api(其本身是使用node.js的express框架);
  • 第二,如何編寫,可以按照express框架編寫網絡請求的方法,如app.get或app.use等;
  • 第三,為了保持與githu api一致,我需要引入github rest api,如@octokit/rest;

參考api地址

示例一:  octokit.repos.listForOrg({  org: 'octokit',  type: 'public' }).then(({ data, status, headers }) => {  // handle data  //console.log("status:"+JSON.stringify(headers));  //console.log(status);  console.log(data); }) 返回的octokit相關的api信息(信息太多了,就先簡略)
示例二: const clientWithAuth = new Octokit({ auth: 'token secret123' }) console.log(clientWithAuth)//查看詳細信息 console.log(JSON.stringify(clientWithAuth))//輸出簡要信息如下 所示: 返回的信息: {"log":{},"activity":{},"apps":{},"checks":{},"codesOfConduct":{},"emojis":{}, "gists":{},"git":{},"gitignore":{},"interactions":{},"issues":{},"licenses":{}, "markdown":{},"meta":{},"migrations":{},"oauthAuthorizations":{},"orgs":{}, "projects":{},"pulls":{},"rateLimit":{},"reactions":{},"repos":{},"search":{}, "teams":{},"users":{},"gitdata":{},"authorization":{},"pullRequests":{} }

第四,根據router.json(node_modules/@octokit/rest/plugins/rest-api-endpoints/routes.json)也就是octokit里面定義github rest api的地方(該文件定義了所需的所有的請求信息),我可以仿照其編寫對應的網絡請求(美其名依樣畫葫蘆);

如果要用一句簡單直接的話來概述,模仿github rest api編寫一個mock server來替換github,只要接口定義保持一致就可以。
但是目前存在一個問題,我在此停滯不前。正在想辦法解決這個問題。

這個問題是,我參考其對應的rest api文檔寫代碼,但是其返回的信息卻并沒有我想要的,返回是一大堆沒有用處的function之類的,而不是具體的信息。

但是以5why原則來看待這個問題:

為什么github api會返回一大堆function?

這些function有什么用?github api不會無緣無故返回沒有用的東西

還有就是為什么console.log(clientWithAuth)返回詳細信息,console.log(JSON.stringify(clientWithAuth))返回的卻是簡要信息呢?難道是因為非JSON數據嗎?兩者返回的都是JSON數據

我查找JSON.stringify()認為應該是這個原因:

JSON.stringify() 方法是將一個JavaScript值(對象或者數組)轉換為一個 JSON字符串,如果指定了replacer是一個函數,則可以替換值,或者如果指定了replacer是一個數組,可選的僅包括指定的屬性(參考地址)

另外前面雖說不講mock server的實現思路,但是還是要推薦一下一個開源實現框架 moco。

github倉庫地址為:https://github.com/dreamhead/moco

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久久久大尺度| 国产有码一区二区| 亚洲国产一区二区三区在线观看| 91精品国产高清久久久久久| 久久亚洲春色中文字幕| 亚洲精品xxx| 2019中文字幕在线| 亚洲人成电影网站色…| 国产女人18毛片水18精品| 日韩视频第一页| 欧美色videos| 97精品一区二区三区| 最近2019好看的中文字幕免费| 欧美午夜激情在线| 欧美激情中文字幕在线| 国产日韩一区在线| 在线播放日韩专区| 欧美激情性做爰免费视频| 欧美极品少妇与黑人| 丰满岳妇乱一区二区三区| 亚洲欧洲国产伦综合| 午夜精品一区二区三区视频免费看| 久久久亚洲影院| 欧美黑人巨大精品一区二区| 热99精品只有里视频精品| 美女视频黄免费的亚洲男人天堂| 久久久中精品2020中文| 姬川优奈aav一区二区| 91中文在线观看| 国产精品久久久久久久久久免费| 日本不卡高字幕在线2019| 亚洲少妇中文在线| 欧美激情精品久久久久久黑人| 亚洲一二三在线| zzjj国产精品一区二区| 亚洲欧美在线x视频| 一区三区二区视频| 欧美成人午夜激情视频| 国产精品户外野外| 国产精自产拍久久久久久| 久久久久久国产精品三级玉女聊斋| 91在线观看免费高清| 日韩精品中文在线观看| 日av在线播放中文不卡| 欧美激情第一页xxx| 国产精品日韩在线播放| 亚洲免费高清视频| 欧美日韩一区二区免费在线观看| 尤物九九久久国产精品的分类| 欧美日韩另类视频| 97超级碰碰人国产在线观看| 日韩欧美在线中文字幕| 欧美日韩精品二区| 国产欧美一区二区三区视频| 久久人人爽亚洲精品天堂| 91在线无精精品一区二区| 国产丝袜一区二区三区免费视频| 亚洲老司机av| 欧美日韩在线视频一区| 亚洲视频在线免费观看| 久久影院免费观看| 成人av资源在线播放| 亚洲精品小视频| 欧美视频裸体精品| 97国产真实伦对白精彩视频8| 亚洲精品在线看| 成人午夜在线影院| 久久久久久久久久久av| 欧美亚洲国产视频| 欧美小视频在线| 欧美在线视频在线播放完整版免费观看| 欧美一性一乱一交一视频| 精品视频久久久久久| 欧美成人精品h版在线观看| 欧美日本啪啪无遮挡网站| 亚洲精品小视频在线观看| 亚洲一级黄色片| 97超碰色婷婷| 国产精品久久久久久亚洲调教| 国产成人福利夜色影视| 欧美丝袜美女中出在线| 成人免费在线视频网站| 国产小视频91| 国产精品旅馆在线| 成人动漫网站在线观看| 91久久久在线| 国产日韩欧美黄色| 超碰精品一区二区三区乱码| 欧美综合在线观看| 2019亚洲男人天堂| 中文字幕综合一区| 91高清免费在线观看| 午夜精品www| 不卡在线观看电视剧完整版| 国产精品69av| 精品亚洲精品福利线在观看| 国产精品亚洲综合天堂夜夜| 成人黄在线观看| 国产精品第100页| 97免费视频在线播放| 日本成人在线视频网址| 九九热r在线视频精品| 亚洲精品电影在线观看| 全亚洲最色的网站在线观看| 国产精品一区二区女厕厕| 久久婷婷国产麻豆91天堂| 欧美大尺度在线观看| 国产美女久久久| 中文字幕无线精品亚洲乱码一区| 亚洲人成在线一二| 欧美性高跟鞋xxxxhd| 成人av资源在线播放| 国产精品永久免费在线| www高清在线视频日韩欧美| 91精品久久久久久久久青青| 亚洲精品福利资源站| 国产精品欧美一区二区三区奶水| 理论片在线不卡免费观看| 欧美综合在线第二页| 亚洲性69xxxbbb| 精品国产一区二区三区久久久| 国产啪精品视频网站| 国产在线一区二区三区| 亚洲男人av在线| 成人免费观看49www在线观看| 日日摸夜夜添一区| 欧美乱大交做爰xxxⅹ性3| 色综合色综合网色综合| 色无极亚洲影院| 九九热精品视频| 国产精品男女猛烈高潮激情| 国产偷亚洲偷欧美偷精品| 91久久久在线| 欧美日韩亚洲成人| 欧美性xxxxxxx| 高清欧美性猛交| 国产一区av在线| 亚洲欧洲av一区二区| 国产精品久久久久久久久影视| 最近2019中文字幕第三页视频| 久久久成人精品| 日韩av手机在线观看| 亚洲wwwav| 91大神在线播放精品| 7m第一福利500精品视频| 久久av在线看| 亚洲国产精品国自产拍av秋霞| 亚洲成人久久一区| 欧美激情亚洲国产| 久久久久久久激情视频| 亚洲xxxx妇黄裸体| 中国日韩欧美久久久久久久久| 精品中文字幕在线| 国产精品永久免费观看| 久久国产精品网站| 久久躁日日躁aaaaxxxx| 日本在线观看天堂男亚洲| 色噜噜狠狠色综合网图区| 国产精品第一视频| 中文字幕日韩精品有码视频| 成人精品一区二区三区电影黑人| 欧美黑人又粗大| 黄色精品一区二区| 欧美另类第一页|