建立一個Express應用程序,express()
函數是express
模塊導出的頂級函數。html
var express = require('express'); var app = express();
此中間件在Express v4.16.0及更高版本中可用。
這是Express中的內置中間件函數,它使用JSON有效負載解析傳入的請求,並基於body-parser。express
返回僅解析JSON的中間件,並僅查看Content-Type
header與type
選項匹配的請求,此解析器接受body的任何Unicode編碼,並支持gzip
的自動解壓和deflate
編碼。npm
在中間件(即req.body
)以後的request
對象上填充包含已解析數據的新body對象,或若是沒有要解析的body則爲空對象({}
)、Content-Type
不匹配、或發生錯誤。json
因爲req.body
的形狀基於用戶控制的輸入,所以該對象中的全部屬性和值都是不可信的,應該在信任以前進行驗證。例如,req.body.foo.toString()
可能以多種方式失敗,例如foo
可能不存在或者可能不是字符串,而toString
可能不是函數,而是字符串或其餘用戶輸入。
下表描述了可選options
對象的屬性。數組
屬性 | 描述 | 類型 | 默認 |
---|---|---|---|
inflate | 啓用或禁用處理壓縮的body,禁用時,壓縮的body會被拒絕。 | Boolean | true |
limit | 控制最大請求體大小,若是這是一個數字,則該值指定字節數; 若是是字符串,則將值傳遞給bytes庫以進行解析; |
混合 | "100kb" |
reviver | reviver 選項做爲第二個參數直接傳遞給JSON.parse ;你能夠在有關JSON.parse的MDN文檔中找到有關此參數的更多信息; |
函數 | null |
strict | 啓用或禁用僅接受數組和對象; 禁用時將接受 JSON.parse 接受的任何內容; |
Boolean | true |
type | 這用於肯定中間件將解析的媒體類型; 此選項能夠是字符串、字符串數組或函數; 若是不是函數,則將 type 選項直接傳遞給type-is庫,這能夠是擴展名(如json)、mime類型(如 application/json ),或帶有通配符的mime類型(如 */* 或*/json );若是是函數,則將 type 選項做爲fn(req) 調用,若是返回truthy值,則解析請求 |
混合 | "application/json" |
verify | 此選項(若是提供)稱爲verify(req, res, buf, encoding) ;其中 buf 是原始請求體的Buffer ;encoding 是請求的編碼,能夠經過拋出錯誤來停止解析。 |
函數 | undefined |
這是Express中的內置中間件函數,它提供靜態文件,基於serve-static
。緩存
注意:爲得到最佳結果,請使用反向代理緩存來提升服務靜態資源的性能。
root
參數指定從中提供靜態資源的根目錄,該函數經過將req.url
與提供的root
目錄相結合來肯定要提供的文件。當找不到文件時,它不是發送404響應,而是調用next()
繼續下一個中間件,容許堆疊和回退。app
下表描述了options
對象的屬性,另請參見下面的示例。函數
屬性 | 描述 | 類型 | 默認 |
---|---|---|---|
dotfiles | 肯定如何處理dotfiles(以點「. 」開頭的文件或目錄);請參閱下面的dotfiles |
String | 「ignore」 |
etag | 啓用或禁用etag生成,注意:express.static 老是發送弱ETag |
Boolean | true |
extensions | 設置文件擴展名回退:若是找不到文件, 搜索具備指定擴展名的文件並提供找到的第一個文件; 例如: ['html', 'htm'] |
混合 | false |