Express4.x常用API(一):res

来源:http://www.cnblogs.com/thewindsword/archive/2016/03/21/5296641.html
-Advertisement-
Play Games

最近在學習NodeJS,用到了express,看著官網上的API手冊,打算把其中比較常用到的API根據自己理解翻譯一下,方便自己學習使用. 該篇打算用來記錄下express中res. 由於水平有限,希望能得到大家的修改,在學習過程中我會持續更新修改 Response res對象表示的是Express


最近在學習NodeJS,用到了express,看著官網上的API手冊,打算把其中比較常用到的API根據自己理解翻譯一下,方便自己學習使用.

該篇打算用來記錄下express中res.

由於水平有限,希望能得到大家的修改,在學習過程中我會持續更新修改


 

Response

res對象表示的是Express收到了HTTP請求時的應答.

雖然經常寫作res,但是其實你可以自己自由的在回調函數中去定義它

 

1 app.get('/',function(req,res){//第二個參數res就是Response
2     res.send("!");
3 })

 

 

Properties

res.app:只是用於保存哪個express應用實例在使用中間件.res.app和req.app是應答中是一樣的.

res.headersSent:是一個boolean值,在你的res對象發送後會變為true,如res.send();之後.

res.locals:一個JavaScript對象,它可以用於獲取並保存req中的信息,並且生命周期在整個應答周期中.

Methods

res.append(field[,value])

對HTTP應答頭部追加特別的值,值能為字元串或數組.在之後使用res.set()會重置之前所有的值.

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

就是設置cookie的函數啦~這個name和value就不必多說了,但是值得註意的是value應該是字元串或者能轉換為JSON的對象.options參數是一個對象並含有下列屬性.

 Property Type Description
 domain String   cookie的功能變數名稱,預設為app的名稱
 expires Date   cookie的有效期,沒有指定或設為0,創建的有效期為此次會話
 httpOnly Boolean   標誌cookie只能被web伺服器使用
 maxAge String   方便的通過毫秒設置cookie的有效期
 path String  cookie的path,預設是"/".
 secure Boolean   表示這個cookie只能用於HTTPS
 signed Boolean   指出該cookie是否被標記

 

  

  

 

 

 

res.clearCookie(name[,options])

  顧名思義,清楚cookie的函數,options可以參考上表

res.download(path[,filename][,fn])

  和res.attachment()後res.send()/res.end()一樣,用於提供文件的下載服務,第一個參數為文件在伺服器的位置,第二個參數則是提供給用戶的預設的下載名稱,第三個參數為回調函數,可以用於處理下載錯誤或統計下載數.res.download()使用了res.sendFile()來傳輸文件

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

結束應答的處理,這個方法來自於Node core

鏈接在此

這個方法標志著伺服器應答的所有頭部和數據都已經發送完畢.在express中通常用於快速的結束無數據的應答,如果需要返回數據,用res.send()和res.json().

res.format(object)

調用req.accepts()來獲取請求的類型,並根據請求類型執行不同的函數,對於這個,還是放代碼比較好吧.以下為官方API的代碼,在無匹配的情況下預設執行default函數.

 1 res.format({
 2   'text/plain': function(){ 
 3     res.send('hey');
 4   },
 5 
 6   'text/html': function(){
 7     res.send('<p>hey</p>');
 8   },
 9 
10   'application/json': function(){
11     res.send({ message: 'hey' });
12   },
13 
14   'default': function() {
15     // log the request and respond with 406
16     res.status(406).send('Not Acceptable');
17   }
18 });

  res.get(field)

  返回相應頭部信息,註意的是在處理周期中,不使用res.append()和res.set()設置頭部信息,頭部信息為undefined.

res.json([body])

  發送一個JSON應答,這個方法和res.send()使用對象或數組作為參數完全相同(但是測試後發現在處理null上,兩個函數是有差別的,send()會返回空白字元串,而json()會返回null字元串).你也可以用null和undefined作為參數傳入(儘管它們在嚴格意義上不是有效的JSON數據)

res.jsonp([body])

  和res.json的方法是基本一樣的,但是添加了對jsonp的支持.對於回調函數的名稱可以用app.set('jsonp callback name','callbackName')來設置

res.links(links)

  設置Link應答頭部.

res.location(path)

  設置HTTP應答location頭部,返回狀態碼302時(表示文檔轉移時)自動跳轉到location所表示鏈接上.設置為"back"則跳轉到前一個頁面

res.redirect([status,]path)

  重定向到其他網頁,status預設為302.感覺和res.location()+res.status(302).end()差不多,不過path支持back字元串來回退到referer,".."來回退上一個目錄

res.render(view[,locals][,callback])

    • 如果有callback函數:渲染後的HTML string作為參數傳入,不會直接發送到接收方.next(err)不被執行,會將err當作參數傳入,不會有預設響應.
    • 如果沒有callback函數:渲染後的HTML string會直接返回給請求方.發生錯誤會執行next(err)

   可以在callback函數中進行渲染後模板的拼接或修改.

res.send([body])

  發送HTTP應答,body參數有以下幾個選項,如果之前沒有定義Content-Type,根據參數不同有不同的Content-Type

    • 對象->JSON
    • 數組->JSON
    • 字元串->test/html
    • Buffer對象->application/octet-stream
    • 數字->根據數字對應狀態碼的不同返回字元,200->OK,404->Not Found

   該方法主要特點在於在non-streaming應答時能自動的完成對header的添加.如HTTP緩存和Content-Length

res.sendFile(path,[,options][,fn])

  傳輸path指出的文件,並根據文件拓展名生成Content-Type.除非root在options中已經被設置了,不然path應該是文件的絕對路徑.

  options對象屬性設置如下表:

PropertyDescriptionDefaultAvailability
maxAge 設置Cache-Control的max-age屬性,值為毫秒或ms format 0  
root 設置根目錄    
lastModified 設置Last-Modified頭部為系統上文件的最後修改日期,設置為false可以禁用它 Enabled 4.9.0+
headers 設置HTTP頭部,類型為對象    
dotfiles 設置是否提供隱藏文件,可設置為"allow","deny","ignore" "ignore"  

 

  

 

 

 

在傳輸完成或者錯誤發生後,將會調用fn(err)

res.sendStatus(statusCode)

發送HTTP應答狀態碼,在狀態碼有效情況下res.sendStatus(200) 等同於res.status(200).send("OK")

如果輸入的狀態碼無效,HTTP statu依舊會被設定為參數值,並且返回字元串變為傳入參數值.

res.set(field[,value])

一次性設定完應答頭部信息,如果之前有設置頭部信息,則會被覆蓋.傳入的一個參數為對象/兩個參數為相對應的頭部和值.

res.status(code)

使用該方法設定HTTP 應答的status.相關:Response.statusCode()

res.type(type)

使用該方法設定HTTP 應答的Content-Type,如果傳入參數為"/",則Content-Type會被設置為type.該方法用於判斷type的函數來自於mime.lookup()

res.vary(field)

在沒有Vary應答頭部時增加Vary應答頭部.

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在實際開發項目中,會遇到很多定時任務的工作。比如:定時導出某些數據、定時發送消息或郵件給用戶、定時備份什麼類型的文件等等 一般可以寫個定時器,來完成相應的需求,在node.js中自已實現也非常容易,接下來要介紹的是node-schedule來完成定時任務 下麵就用示例來說明一下node-schedu
  • 運算 sass可進行簡單的加減乘除運算等 所謂選擇器嵌套指的是在一個選擇器中嵌套另一個選擇器來實現繼承,從而增強了sass文件的結構性和可讀性。 如上代碼,定義了兩個占位選擇器%ir和%clearfix,其中%clearfix這個沒有調用,所以解析出來的css樣式也就沒有clearfix部分。占位選
  • 屬性列表 說明 webkit webkit相關瀏覽器則返回true,否則返回false,如google,傲游。 mozilla mozilla相關瀏覽器則返回true,否則返回false,如火狐 safari safari相關瀏覽器則返回true,否則返回false,如safari opera op
  • 首先,React.js是facebook在2013年5月開源的一個前端框架,React不是一個MVC框架,它是構建易於可重覆調用的web組件,側重於UI, 也就是view層, React為了更高超的性能而使用虛擬DOM作為其不同的實現。 它同時也可以由服務端Node.js渲染 - 而不需要過重的瀏覽
  • 最近做重構,有一個功能是,滑鼠點擊鏈接後顯示不同樣式: 代碼如下,樣式佈局我修改後如下,使用bootstrap框架來做。 現在重點說一下:功能實現。 原來代碼是這樣實現鏈接點擊樣式的,給每個鏈接不同的class, 然後在page1.html頁面定義: 同理在page2.html頁面定義: 在page
  • Firebug功能異常強大,不僅可以調試DOM,CSS,還可以調試JS代碼,下麵介紹一下調試JS。 console對象是Firebug內置的對象,該對象可以在代碼中寫入,可以在控制面板中寫入。 1)有五個方法來顯示信息。依次為: 1、console.log(),可以用來取代alert()或docum
  • 之前計劃是一周還原一個網頁或者切一張psd來練習基本功的。正好周五的時候接到一個電話面試,讓我還原一下163郵箱主頁,晚上發給他,就正好當是這周的練習吧。 吃完晚飯開工,做到12點,差不多4個小時,基本上做完了,不過還有些局部沒完成。算還原度90%吧,剩下的這兩天有空再補啦。 這是目前的完成情況 w
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...