亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Node.js學(xué)習(xí)之路26——Express的response對(duì)象

davidac / 597人閱讀

摘要:如果包含字符則將設(shè)置為。添加字段到不同的響應(yīng)頭將該字段添加到不同的響應(yīng)標(biāo)頭如果它尚未存在。

3. response對(duì)象 3.1 是否發(fā)送了響應(yīng)頭

res.headersSent布爾屬性,app是否發(fā)送了httpheaders

const express = require("express");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser")
const app = express();

app.use(bodyParser.json());// parsing application/json
app.use(bodyParser.urlencoded({ extended: true }));// parsing application/x-www-form-urlencoded
app.use(cookieParser())

app.get("/", (req, res) => {
    console.log(res.headersSent); // false
    res.send("OK");
    console.log(res.headersSent); // true
})
app.listen(3000);
3.2 添加響應(yīng)頭信息

res.append(filed,[value])添加響應(yīng)頭信息

使用res.append()之后調(diào)用res.set()將會(huì)重置先前設(shè)置的頭信息

const express = require("express");
const app = express();
app.get("/", (req, res) => {
    console.log(res.headersSent); // false
    res.append("Link", ["", ""]);
    res.append("Set-Cookie", "foo=bar; Path=/; HttpOnly");
    res.append("Warning", "199 Miscellaneous warning");
    res.attachment("path/to/logo.png");
    res.cookie("user", { name: "Jack", age: 18 });
    res.cookie("maxAge", 1000 * 60 * 60 * 24 * 30);
    res.send("OK");
    console.log(res.headersSent); // true
})
app.listen(3000);
3.3 設(shè)置HTTP響應(yīng)Content-Disposition字段attachment

res.attachment([filename])

設(shè)置HTTP響應(yīng)Content-Disposition字段attachment

如果參數(shù)為空,那么設(shè)置Content-Disposition:attachment

如果參數(shù)有值,那么將基于res.type()擴(kuò)展名設(shè)置Content-Type的值,并且設(shè)置Content-Disposition的值為參數(shù)值

res.attachment();
// Content-Disposition: attachment

res.attachment("path/to/logo.png");
// Content-Disposition: attachment; filename="logo.png"
// Content-Type: image/png

3.4 設(shè)置cookie信息

res.cookie(name, value, [options])

清除cookie信息res.clearCookie(name, [options])

設(shè)置cookienamevalue,value值可以是stringobject,options是一個(gè)對(duì)象

domain,string,cookie的域名,默認(rèn)為該app的域名

expires,date,過(guò)期時(shí)間

httpOnly,boolean,cookie的標(biāo)志位,只能允許http web server

maxAge,string,用于設(shè)置過(guò)期時(shí)間相對(duì)于當(dāng)前時(shí)間 (以毫秒為單位) 的選項(xiàng).

path,string,cookie的路徑,默認(rèn)為/

secure,boolean,標(biāo)記只用于HTTPScookie.

signed,boolean,指示是否應(yīng)對(duì)cookie進(jìn)行簽名.(有問(wèn)題,需要cookie-parser)

所有的res.cookie ()都是用所提供的選項(xiàng)設(shè)置HTTP設(shè)置cookie頭.任何未指定的選項(xiàng)都默認(rèn)為RFC 6265中所述的值.
使用cookie-parser中間件時(shí), 此方法還支持簽名的cookie.只需將簽名的選項(xiàng)設(shè)置為 true.然后,res cookie ()將使用傳遞給cookieParser(秘密) 的秘密來(lái)簽署該值.
3.5 響應(yīng)下載信息

res.download(path, [filename], [callback(err){...}])

const express = require("express");
const app = express();
app.get("/", (req, res) => {
    res.download("static/download/file.pdf", "file.pdf", (err) => {
        if (err) {
            res.send(err);
        }
    });
})
app.listen(3000);
3.6 結(jié)束響應(yīng)進(jìn)程

res.end([data], [encoding])

不需要返回任何數(shù)據(jù),如果需要返回?cái)?shù)據(jù),可以使用res.send()或者res.json()

3.7 獲取請(qǐng)求頭信息

res.get(field)

通過(guò)字段返回HTTP請(qǐng)求頭信息,大小寫(xiě)敏感

res.get("Content-Type");
// => "image/png"
3.8 發(fā)送一個(gè)JSON響應(yīng)

res.json([body])

方法類(lèi)似于帶有一個(gè)對(duì)象參數(shù)或數(shù)組參數(shù)的res.send()

參數(shù)也可以為null或者undefined

res.json(null)
res.json({ user: "tobi" })
res.status(500).json({ error: "message" })
3.9 填充響應(yīng)的鏈接HTTP標(biāo)題頭字段

res.links(links)

res.links({
    next: "http://localhost:3000/users?page=2",
    next: "http://localhost: /users?page=5"
})
3.10 響應(yīng)重定向

res.redirect([status], path)

如果不指定status狀態(tài),默認(rèn)狀態(tài)碼status code302 Found

如果要跳轉(zhuǎn)到外部的鏈接,需要加上http://

返回上一步的頁(yè)面res.redirect("back");

返回上一級(jí)的頁(yè)面,如果現(xiàn)在是在http://example.com/admin/post/new頁(yè)面,想要跳轉(zhuǎn)到上一級(jí)頁(yè)面http//example.com/admin/post,使用res.redirect("..");

res.redirect("/users");
res.redirect(301, "http://localhost:3000/login")
3.11 渲染模板引擎

res.render(view, [locals], [callback(err,html){...}])

模板引擎一般有ejs,jade,html

3.12 發(fā)送HTTP響應(yīng)信息

res.send([body])

參數(shù)可以是String,Buffer,Array

res.send(new Buffer("whoop"));
res.send({ some: "json" });
res.send("

some html

"); res.status(404).send("Sorry, we cannot find that!"); res.status(500).send({ error: "something blew up" });
3.13 給定路徑上傳輸文件

res.sendFile(path, [options], [callback(err){...}])

根據(jù)文件名的擴(kuò)展名設(shè)置內(nèi)容類(lèi)型響應(yīng)HTTP標(biāo)頭字段.除非在選項(xiàng)對(duì)象中設(shè)置了根選項(xiàng), 否則路徑必須是文件的絕對(duì)路徑.

options是一個(gè)對(duì)象選項(xiàng)

maxAge,以毫秒為單位設(shè)置Cache-Control標(biāo)題頭的最大屬性或ms格式的字符串,默認(rèn)為0

root,相對(duì)文件名的根目錄

lastModified,將Last-Modified的標(biāo)題頭設(shè)置為操作系統(tǒng)上文件的最后修改日期.設(shè)置為false以禁用它.

headers,包含要與文件一起服務(wù)的HTTP標(biāo)頭的對(duì)象.

dotfiles,服務(wù)dotfiles的選項(xiàng).可能的值是allow,deny,ignore,默認(rèn)值為ignore

router.get("/file/:name", (req, res, next) => {
    let options ={
        root: "./public/static/download/",
        dotfiles: "deny",
        headers: {
            "x-timestamp": Date.now(),
            "x-sent": true
        }
    };
    
    let fileName = req.params.name;
    res.sendFile(fileName, options, (err) => {
        if(err){
            console.log(err);
            res.status(err.status).end();
        }else{
            console.log("Sent: ",fileName)
        }
    })
});
3.14 設(shè)置狀態(tài)代碼

res.sendStatus(statusCode)

將響應(yīng)HTTP狀態(tài)代碼設(shè)置為statusCode, 并將其字符串表示形式作為響應(yīng)正文發(fā)送.

res.sendStatus(200); // equivalent to res.status(200).send("OK")
res.sendStatus(403); // equivalent to res.status(403).send("Forbidden")
res.sendStatus(404); // equivalent to res.status(404).send("Not Found")
res.sendStatus(500); // equivalent to res.status(500).send("Internal Server Error")
3.15 設(shè)置響應(yīng)頭信息

res.set(field, [value])

可以單個(gè)設(shè)置,也可以用一個(gè)對(duì)象設(shè)置

res.set("Content-Type", "text/plain");

res.set({
  "Content-Type": "text/plain",
  "Content-Length": "123",
  "ETag": "12345"
})
3.16 設(shè)置響應(yīng)狀態(tài)

res.status(code)

使用此方法可設(shè)置響應(yīng)的HTTP狀態(tài).它是節(jié)點(diǎn)響應(yīng)的式別名statusCode

res.status(403).end();
res.status(400).send("Bad Request");
res.status(404).sendFile("/absolute/path/to/404.png");
3.17 設(shè)置響應(yīng)類(lèi)型

res.type(type)

將內(nèi)容類(lèi)型HTTP標(biāo)頭設(shè)置為指定類(lèi)型的mime.lookup()所確定的mime類(lèi)型。如果type包含/字符, 則將Content-Type設(shè)置為type。

res.type(".html");              // => "text/html"
res.type("html");               // => "text/html"
res.type("json");               // => "application/json"
res.type("application/json");   // => "application/json"
res.type("png");                // => "image/png:"
3.18 添加字段到不同的響應(yīng)頭

res.vary(filed)

將該字段添加到不同的響應(yīng)標(biāo)頭 (如果它尚未存在)。

res.vary("User-Agent").render("docs");

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93057.html

相關(guān)文章

  • Node.js學(xué)習(xí)之路27——Expressrouter對(duì)象

    摘要:對(duì)象大小寫(xiě)敏感默認(rèn)不敏感保留父路由器的必需參數(shù)值如果父項(xiàng)和子項(xiàng)具有沖突的參數(shù)名稱(chēng)則該子項(xiàng)的值將優(yōu)先激活嚴(yán)格路由默認(rèn)禁用禁用之后正常訪問(wèn)但是不可以訪問(wèn)全部調(diào)用或者或者實(shí)際上就是的各種請(qǐng)求方法使用路由使用模塊方法 Router([options]) let router = express.Router([options]); options對(duì)象 caseSensitive,大小寫(xiě)敏...

    NicolasHe 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路25——Expressrequest對(duì)象

    摘要:對(duì)象表示請(qǐng)求并且具有請(qǐng)求查詢字符串參數(shù)正文標(biāo)題頭等屬性對(duì)應(yīng)用程序?qū)嵗囊帽4媪撕芏鄬?duì)使用中間件的應(yīng)用程序?qū)嵗囊脪燧d在路由實(shí)例上的路徑請(qǐng)求主體和和包含在請(qǐng)求正文中提交的數(shù)據(jù)的鍵值對(duì)默認(rèn)情況下它是未定義的當(dāng)您使用體解析中間件如和時(shí)將被填 2. request req對(duì)象表示http請(qǐng)求,并且具有請(qǐng)求查詢字符串,參數(shù),正文,http標(biāo)題頭等屬性 app.get(/user/:id, ...

    cocopeak 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路24——Express框架app對(duì)象

    1.express() 基于Node.js平臺(tái),快速、開(kāi)放、極簡(jiǎn)的web開(kāi)發(fā)框架。 創(chuàng)建一個(gè)Express應(yīng)用.express()是一個(gè)由express模塊導(dǎo)出的入口top-level函數(shù). const express = require(express); let app = express(); 1.1 靜態(tài)資源管理 express.static(root, [options]) expr...

    smallStone 評(píng)論0 收藏0
  • Node.js 中度體驗(yàn)

    摘要:創(chuàng)建簡(jiǎn)單應(yīng)用使用指令來(lái)載入模塊創(chuàng)建服務(wù)器使用方法創(chuàng)建服務(wù)器,并使用方法綁定端口。全局安裝將安裝包放在下。的核心就是事件觸發(fā)與事件監(jiān)聽(tīng)器功能的封裝。通常我們用于從一個(gè)流中獲取數(shù)據(jù)并將數(shù)據(jù)傳遞到另外一個(gè)流中。壓縮文件為文件壓縮完成。 創(chuàng)建簡(jiǎn)單應(yīng)用 使用 require 指令來(lái)載入 http 模塊 var http = require(http); 創(chuàng)建服務(wù)器 使用 http.create...

    CastlePeaK 評(píng)論0 收藏0
  • Node.js學(xué)習(xí)之路23——Node.js利用mongoose連接mongodb數(shù)據(jù)庫(kù)

    摘要:類(lèi)比一下你有一個(gè)巨型停車(chē)場(chǎng),里邊分了不同的停車(chē)區(qū)集合,這里的,每個(gè)停車(chē)區(qū)可以停很多車(chē)下文提到的,相當(dāng)于每個(gè)數(shù)據(jù)集合里邊可以有很多張數(shù)據(jù)表。 Node.js利用mongoose連接mongodb數(shù)據(jù)庫(kù) Node.js連接mongodb數(shù)據(jù)庫(kù)有很多種方法,通過(guò)mongoose模塊引入是其中的一個(gè)方法 代碼組織結(jié)構(gòu) |---|根目錄 |---|---|connect.js(mongoose測(cè)...

    ssshooter 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<