同一個請求所通過的中間件,都是同一個請求對象和響應對象javascript
中間件函數中有三個基本參數, req、res、nextjava
注意:next的方法只是對中間件有用,對於其餘的代碼沒有什麼做用
複製代碼
萬能匹配(不關心任何請求路徑和請求方法)express
app.use(function(req,res,next){
console.log('2')
next();
});
複製代碼
只是以'/xxx/'開頭的bash
app.use('/a',function(req,res,next){
console.log(req.url);
})
複製代碼
路由過多時,代碼很差管理。以大事件的代碼爲例,咱們定義了管理員角色的接口和普通遊客的接口,這些接口若是全寫在一個入口文件中(以下只是顯示了4個接口,若是是40個接口,就會很難讀了),是很很差維護的。 get:app
app.get('/',function(req,res,next){
res.end('Hello World!');
})
複製代碼
post:dom
app.post('/',function(req,res,next){
res.end('Hello World!');
})
複製代碼
put:函數
app.put('/user',function(req,res,next){
res.end('Hello World!');
})
複製代碼
delete:post
app.delete('/user',function(req,res,next){
res.end('Hello World!');
})
複製代碼
app.use(function(err,req,res,next){
consloe.error(err.stack);
res.status(500).end('something broke');
})
複製代碼
const express=require('express');
const path=require('path')
// Post文件上傳時,咱們須要使用multer中間件
const multer=require('multer');
const sr=require('string-random');
// 用來生成隨機字符串的包,string-random
// 對multer進行配置
// 設置文件保存位置
// 設置文件上傳名稱
let upload=multer(multer.diskStorage({
storage:multer.diskStorage({
// 用來設置存儲位置
destination:(req,res,callback)=>{
// 注意callback的參數1正常處理中必須是null
//參數2爲地址須要採用絕對路徑的方式
callback(null,path.join(__dirname,'./upload'));
},
// filename設置文件名
filename:(req,file,callback)=>{
// file是文件信息
// sr用來生成隨機的字符串,初始歸入的數值爲生成的字符串長度
// 參數名須要設置name
callback(null,sr(15)+file.originalname);
}
})
}));
let app=express();
// 設置時,須要在app.post參數2中設置upload.single()
app.post('/fileupload',upload.single('file'),(req,res)=>{
console.log(req.file);
res.end('ok');
});
app.listen(8888,()=>{
console.log('8888.....');
})
複製代碼