亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

node.js express框架簡介與實現(xiàn)

 更新時間:2019年07月23日 15:14:16   作者:挑戰(zhàn)者V  
這篇文章主要介紹了node.js express框架簡介與實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

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

今天的內(nèi)容主要圍繞這么幾個方面?

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

一、express框架初步介紹

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

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

1.express框架的特性

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

2.安裝express

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

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

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

安裝命令如下所示:

npm install body-parser --save
npm install cookie-parser --save
npm 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其實區(qū)別如(引用一位朋友說的):

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

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

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

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

var express = require('express');
var app = express();
function testUser(req, res, next){
 // req 參數(shù)可以接受一些請求的參數(shù)(req.query/req.body) 和 請求頭信息
 // res 用于響應信息
 // 調(diào)用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);

關(guān)于node.js的express框架就介紹這么多,最近本人因?qū)崿F(xiàn)某個插件的功能而需要用到的,這與下面說的mock server有比較大的關(guān)系。

三、mock server 介紹

mock server 翻譯過來的意思是模擬服務(wù)。

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

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

四、mock server的實現(xiàn)思路

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

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

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

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

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

針對目前這個需求,我的實現(xiàn)思路如下:

  • 第一,針對如何實現(xiàn)一個mock server ,可以復用已有,如mock-github-api(其本身是使用node.js的express框架);
  • 第二,如何編寫,可以按照express框架編寫網(wǎng)絡(luò)請求的方法,如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相關(guān)的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":{}
 }

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

如果要用一句簡單直接的話來概述,模仿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數(shù)據(jù)嗎?兩者返回的都是JSON數(shù)據(jù)

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js如何通過http調(diào)用外部接口

    Node.js如何通過http調(diào)用外部接口

    這篇文章主要介紹了Node.js如何通過http調(diào)用外部接口問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • nodejs實現(xiàn)郵件發(fā)送服務(wù)實例分享

    nodejs實現(xiàn)郵件發(fā)送服務(wù)實例分享

    本文給大家講解的是簡單的使用nodejs搭建郵件發(fā)送服務(wù)的一個實例,非常的好用,有需要的小伙伴可以參考下
    2017-03-03
  • 詳解nvm管理多版本node踩坑

    詳解nvm管理多版本node踩坑

    這篇文章主要介紹了詳解nvm管理多版本node踩坑,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • 詳解axios在node.js中的post使用

    詳解axios在node.js中的post使用

    最近因為工作的原因在學習使用網(wǎng)絡(luò)請求庫,因為這個項目用的是Promise,所以就選擇了axios,下面這篇文章主要給大家介紹了關(guān)于axios在node.js中的post使用的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起學習學習吧。
    2017-04-04
  • nodejs創(chuàng)建簡易web服務(wù)器與文件讀寫的實例

    nodejs創(chuàng)建簡易web服務(wù)器與文件讀寫的實例

    下面小編就為大家?guī)硪黄猲ode js系列課程-創(chuàng)建簡易web服務(wù)器與文件讀寫的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • NodeJS處理Express中異步錯誤

    NodeJS處理Express中異步錯誤

    本文主要闡述如何在 Express 中使用錯誤處理中間件(error-handling middleware)來高效處理異步錯誤。在 Github 上有對應 代碼實例 可供參考。
    2017-03-03
  • Node.js 學習筆記之簡介、安裝及配置

    Node.js 學習筆記之簡介、安裝及配置

    本文是Node.js學習筆記系列文章的第一篇,主要給大家講解的是在Windows和Linux上安裝Node.js的方法。軟件安裝版本以0.12.0為例。希望大家能夠喜歡。
    2015-03-03
  • 利用node.js爬取指定排名網(wǎng)站的JS引用庫詳解

    利用node.js爬取指定排名網(wǎng)站的JS引用庫詳解

    最近在學習node.js爬蟲,由于 nodejs 強大的異步特性,讓我們可以輕松以異步高并發(fā)去爬取網(wǎng)站,下面這篇文章主要給大家介紹了關(guān)于利用node.js爬取指定排名網(wǎng)站的JS引用庫的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • 了不起的node.js讀書筆記之node.js中的特性

    了不起的node.js讀書筆記之node.js中的特性

    這篇文章主要介紹了了不起的node.js讀書筆記之node.js中的特性,需要的朋友可以參考下
    2014-12-12
  • node?NPM庫qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢學習

    node?NPM庫qs?iconv-lite字符串編碼轉(zhuǎn)換及解析URL查詢學習

    這篇文章主要為大家介紹了node?NPM庫之qs解析URL查詢字符串及iconv-lite字符串編碼轉(zhuǎn)換學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07

最新評論