npm install express-generator -g => express express-test => npm install & npm start => 在bin資料夾中的www.js檔案中可以看到訪問的埠是3000,通過瀏覽器訪問localhost:3000。
為了方便開發及除錯,我們還需要npm i nodemon cross-env --s**e-dev,其中cross-env用來設定環境變數的引數,nodemon用來監聽檔案的變化,這樣我們修改**的時候就不需要每次手動重啟服務,可以避免產生一些非預期的錯誤。安裝好這兩個外掛程式之後,開啟package.json檔案,在scripts中新增以下**:
"dev": "cross-env node_env=dev nodemon ./bin/www.js"
,儲存好之後,命令列執行npm run dev"dependencies": ,
"devdependencies":
}
bin/www.js: 建立http服務
public: 靜態檔案目錄,單純開發介面的話,此目錄可以忽略。
routes: 存放路由檔案。
views: 存放html模板,忽略。
下面是**,我做了一些注釋:
處理報錯資訊模組
var express = require('express'); //
引用express框架
var path = require('path'); //
提供了一些用於處理檔案路徑的小工具
var cookieparser = require('cookie-parser'); //
解析cookie
var logger = require('morgan'); //
記錄access log生成日誌
var indexrouter = require('./routes/index'); //
引用路由
var usersrouter = require('./routes/users');
//view engine setup
前端模板處理,不用管可以注釋
//註冊各種功能
//處理表單提交過來的資料 content-type = x-www-form-urlencoded格式
不用管可以注釋
註冊路由 '/' 目的是與路由檔案中的path進行拼接,如:路由檔案中的path是/user
這裡的path '/users' 目的是與路由檔案中的path進行拼接,如:路由檔案中的path是/list 最後訪問的位址就為/user/list
//catch 404 and forward to error handler
檢測404
next(createerror(404));
});//
error handler
丟擲服務端報錯
//set locals, only providing error in development
res.locals.message =err.message;
//因為在package.json中設定的環境變數是dev,所以這裡做了修改
//render the error page
res.status(err.status || 500);
res.render('error');
});1)get請求:
在routes資料夾中新建blog.js檔案,編寫**
var express = require('express');
var router =express.router();
router.get('/list', function
(req, res, next) )
});module.exports = router;
const blogrouter = require('./routes/blog')//定義路由
訪問localhost:3000/api/blog/list,可以看到我們定義的返回值正確的列印在瀏覽器中。
其中,res.json({})可以解析並返回json字串,原生實現大致原理是:res.end(json.stringify(userdata))。另外它還可以自動設定返回的頭資訊為json格式,原生實現大致原理:
2
)post請求:
在blog.js檔案中,編寫**:
router.post('/login', function開啟postman,訪問http://localhost:3000/api/blog/login,設定方法如下:(req, res, next) = req.body //
因為應用了express.json(),所以可以直接從req.body中獲取postdata
res.json(
})});
可以看到這裡返回了我們設定的資料。
我們先來分析一下從瀏覽器位址列輸入url到客戶端顯示資料之間這個過程到底發生了什麼?
瀏覽器向伺服器傳送乙個請求後,伺服器直接通過request.定位屬性的方式得到通過request攜帶過去的資料(有使用者輸入的資料和瀏覽器本身的資料資訊)。這中間就一定有乙個函式將這些資料分類做了處理,已經處理好了,最後讓request物件呼叫使用,對的,這個處理資料處理函式就是我們要說的 中介軟體 。由此可見,中介軟體可以總結以下幾點:
1、封裝了一些處理乙個完整事件的功能函式。
2、非內建的中介軟體需要通過安裝後,require到檔案就可以執行。
3、封裝了一些或許複雜但肯定是通用的功能。
光說可能不太懂,看**你就知道了!
這是乙個驗證登入的函式:
module.exports = (req, res, next) =>然後在路由函式中作為引數傳入:res.json()
}
router.post('/new', logincheck, (req, res, next) =>)這個logincheck就是中介軟體。如果驗證成功,就執行next(),返回「登陸成功」。這只是些簡單的理解,詳情請看大佬部落格})})
Express框架 中介軟體
中介軟體就是一堆方法,主要由中介軟體方法以及請求處理函式組成。可以接收客戶端發來的請求 可以對請求做出響應,也可以將請求繼續交給下乙個中介軟體繼續處理。路由器級中介軟體我們在路由篇中了解過的,就是路由的使用過程,可以直接通過例項使用,也可以通過express.router 使用。可以針對同一路由設定...
express中介軟體
中介軟體的本質就是乙個請求處理方法 函式 該方法接收三個引數 request請求物件 response響應物件 next下乙個中介軟體 把使用者從請求到響應的整個過程分發到多個中介軟體去處理。同乙個請求所經過的中介軟體的請求物件和響應物件都是同乙個請求物件和相應物件 不關心請求路徑和請求方法的中介軟...
Express中介軟體
express是乙個路由和中介軟體web框架,其自身的功能很少 express應用程式本質上是一系列中介軟體函式呼叫。中介軟體功能是可以訪問請求物件 req 響應物件 res 和應用程式的請求 響應週期中的下乙個中介軟體功能的功能。下乙個中介軟體功能通常由名為的變數表示next。中介軟體功能可以執行...