express的初步瞭解使用

express的使用

1:簡介

Express是一個簡潔而靈活node.js web應用框架,用來建立各類web應用,利用express能夠搭建一個網站html

Express框架核心功能:node

  • 設置中間件響應HTTP請求
  • 設置路由執行不一樣的HTTP請求
  • 能夠經過向模板傳遞參數動態渲染頁面

2: express安裝

  • npm install express --save
  • npm install body-parser --save:nodejs中間件,用於處理url、json、text以及raw等編碼數據
  • npm install cookie-parser --save:解析cookie的工具,經過req.cookies,能夠取到傳過來的cookie,並把它們轉成對象
  • npm install multer --save:用於處理enctype="multipart/form-data"的表單數據

3:利用express起一個node服務

var express = require("express");
var app = express();
app.get("/",function(req,res){
    res.send("第一個 Express 框架實例");
});
var server = app.listen(8081);
console.log("執行http://127.0.0.1:"+server.address().port)

34:請求和響應

Request對象,表示http請求,包含了請求查詢字符串,參數,內容,http頭部信息,常見屬性:web

  • req.app:當callback爲外部文件時候,用req.app訪問express實例
  • req.baseUrl:獲取路由當前安裝的URL路徑
  • req.body / req.cookies:得到「請求主體」/ Cookies
  • req.fresh / req.stale:判斷請求是否還「新鮮」
  • req.hostname / req.ip:獲取主機名和IP地址
  • req.originalUrl:獲取原始請求URL
  • req.params:獲取路由的parameters
  • req.path:獲取請求路徑
  • req.protocol:獲取協議類型
  • req.query:獲取URL的查詢參數串
  • req.subdomains:獲取子域名
  • req.accpets():檢查請求的Accept頭的請求類型
  • req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages
  • req.get():獲取指定的HTTP請求頭
  • req.is():判斷請求頭Content-Type的MIME類型

Response對象,表示http響應,在接收到請求後向客戶端發送的http響應數據,常見屬性:express

  • res.app:同req.app同樣
  • res.append():追加指定HTTP頭
  • res.set()在res.append()後將重置以前設置的頭
  • res.cookie(name,value [,option]):設置Cookie
  • opition: domain / expires / httpOnly / maxAge / path / secure / signed
  • res.clearCookie():清除Cookie
  • res.download():傳送指定路徑的文件
  • res.get():返回指定的HTTP頭
  • res.json():傳送JSON響應
  • res.location():只設置響應的Location HTTP頭,不設置狀態碼或者close response
  • res.redirect():設置響應的Location HTTP頭,而且設置狀態碼302
  • res.send():傳送HTTP響應
  • res.sendFile(path [,options] [,fn]):傳送指定路徑的文件 -會自動根據文件extension設定Content-Type
  • res.set():設置HTTP頭,傳入object能夠一次設置多個頭
  • res.status():設置HTTP狀態碼
  • res.type():設置Content-Type的MIME類型

5:路由:

路由決定了由誰(指定腳本)去響應客戶端請求。npm

在HTTP請求中,咱們能夠經過路由提取出請求的URL以及GET/POST參數。json

6:靜態文件

express.static("public")

如下幾個示例須要使用一個server

var express = require("express");
var fs = require("fs");
var bodyParser = require("body-parser");
var cookieParser = require("cookie-parser");
var multer = require("multer");
var app = express();
/*靜態資源*/
app.use(express.static("public"));
/*post請求須要建立application/x-www-form-urlencoded解析*/
var urlencodedParser = bodyParser.urlencoded({extended:false});
/*文件上傳*/
app.use(multer({ dest: '/tmp/'}).array('image'));
/*使用cookie*/
app.use(cookieParser());

app.get("/",function(req,res){
    console.log("Cookies: ", req.cookies)
    res.send("第一個 Express 框架實例");
});
app.get('/ab*cd', function(req, res) {
    console.log("/ab*cd GET 請求");
    res.send('正則匹配');
});

app.get("/list",function(req,res){
    //console.log(req.app)
    console.log("req.hostname:",req.hostname)
    console.log("req.ip:",req.ip)
    console.log("req.originalUrl:",req.originalUrl)
    console.log("req.params:",req.params)
    console.log("req.path:",req.path)
    console.log("req.protocol:",req.protocol)
    console.log("req.query:",req.query)
    console.log("req.route:",req.route)
    console.log("req.subdomains:",req.subdomains)
    console.log("req.get:",req.get)
    res.send("list");
});

app.get("/index",function(req,res){
    console.log("index請求");
    console.log("__dirname:",__dirname);
    res.sendFile(__dirname+"/index.html")
});
app.get("/process_get",function(req,res){
    console.log("process_get請求");
    var info = {
        getname:req.query.getname,
        getage:req.query.getage
    };
    res.send(JSON.stringify(info))
});
app.post("/process_post",urlencodedParser,function(req,res){
    console.log("process_post請求");
    var info = {
        postname:req.body.postname,
        postage:req.body.postage
    };
    res.send(JSON.stringify(info))
});
app.post("/file_upload",function(req,res){
    var des_file = __dirname+"/"+req.files[0].originalname;
    console.log(req.files[0]);
    console.log(__dirname)
    console.log(des_file);

    fs.readFile(req.files[0].path,function(err,data){
        if(err) return console.log(err);
        fs.writeFile(des_file,data,function(err){
            if(err) return console.log(err);
            info = {
                meg:"file upload success!",
                filename:req.files[0].originalname
            }
            res.end( JSON.stringify( info ) );
        })
    });

});
var server = app.listen(8082);
console.log("執行http://127.0.0.1:"+server.address().port)

7:GET方法

<form action="/process_get" method="get">
    <label for="getname">getname</label> <input type="text" name="getname" id="getname">
    <label for="getage">getage</label> <input type="text" name="getage" id="getage">
    <input type="submit" value="提交">
</form>

8:POST方法

  • post請求須要建立application/x-www-form-urlencoded解析
  • var bodyParser = require("body-parser")
  • var urlencodedParser = bodyParser.urlencoded({extended:false})

代碼:cookie

<form action="/process_post" method="post">
    <label for="postname">postname</label> <input type="text" name="postname" id="postname">
    <label for="postage">postage</label> <input type="text" name="postage" id="postage">
    <input type="submit" value="提交">
</form>

9:文件上傳

<form action="/file_upload" method="post" enctype = multipart/form-data>
    <input type="file" name="image" id="image">
    <input type="submit" value="上傳文件">
</form>

10:Cookie管理

相關文章
相關標籤/搜索