環境
- Nodejs 10
- Express 4.x
結論
- reqはIncomingMessage
- resはServerResponse
で、nodejsの標準のオブジェクトで別にExpress特有のものではなさそう
経緯
よく見かけるNodejsのHTTPフレームワークことExpressのHello Worldのサンプル
const express = require('express') const app = express() app.get('/', (req, res) => res.send('Hello World!')) app.listen(3000, () => console.log('Example app listening on port 3000!'))
Expressではreq, res
が必ずと言っていいほど入っているが、その実体は何?って話になった。
console.log(req.constructor.name); console.log(res.constructor.name);
で調べてみると、
IncomingMessage ServerResponse
とでた。Expressのドキュメント探しても見当たらないなーとか思ってたら、どうやらNodejs標準のオブジェクトだったらしい
確かに https://nodejs.org/docs/latest-v10.x/api/http.html#http_message_httpversion を見て
console.log(req.httpVersion)
とかすると 1.1
と表示される
ソース
ちなみにExpress 4.xの公式ドキュメントにて
The req object is an enhanced version of Node’s own request object and supports all built-in fields and methods.
と実は書いてあったりする。いや小さすぎてわからんわ。。。