English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
中間件はリクエストとレスポンスオブジェクトにアクセスできる機能であり、アプリケーションのリクエストでnextを使用できます。-レスポンスサイクルでその機能を使用します。
このチュートリアルでは、Node.js Expressアプリケーションで中間件関数を定義し、中間件関数を呼び出す方法について学びます。
リクエスト –クライアントがHTTPリクエスト(例えばPUT、GETなど)を送信したときにExpressアプリケーションに到達するHTTPリクエストです。クエリストリング、URLパラメータ、ヘッダーなどの属性を含んでいます。
レスポンス–オブジェクトはExpressアプリケーションがHTTPリクエストを受け取ったときに送信するHTTPレスポンスを表します。
next –次の中間件を中間件スタックで続けるために使用されます。
リクエスト-レスポンスサイクル(リクエスト-レスポンスサイクル) –リクエストがExpressアプリケーションに入ってから、リクエストがアプリケーションを出るまでの操作サイクルを実行します。
中間件スタック–リクエスト中-レスポンスサイクル中に実行される中間件機能のスタックです。
中間件機能の定義で既に述べたように、それがリクエスト、レスポンスオブジェクト、次の機能にアクセスできます。
JavaScript関数の文法と同じです。リクエスト、レスポンスオブジェクト、次の関数を引数として受け取ります。
function logger(req, res, next) { }
ここではloggerは関数名で、reqはHTTPリクエストオブジェクト、resはノードのレスポンスオブジェクト、nextはリクエストです。-レスポンスサイクルの次の関数
同様に、request objectのすべての属性とメソッドreqにアクセスできます。
同様に、response objectのすべての属性とメソッドresにアクセスできます。
next()ミドルウェア関数内の呼び出し関数はオプションです。next()文を使用すると、リクエスト中に-レスポンスサイクル中に次のミドルウェア機能を実行し続けます。next()関数を呼び出さない場合、指定されたリクエストの実行はここで停止します。
function logger(req, res, next) { // あなたのコード next() // ミドルウェアスタックの次の関数を呼び出します }
Expressアプリケーションでは、アプリケーションオブジェクト上のuse関数を使用してミドルウェアを呼び出すことができます。
var express = require('express') var app = express() function logger(req, res, next) { // あなたのコード next() } app.use(logger)
このサンプルでは、loggerという名前のミドルウェアを定義し、現在時刻とクエリ文字列をコンソールに記録します。
app.js
var express = require('express') var app = express() // ミドルウェア機能を定義 function logger(req, res, next) { console.log(new Date(), req.url) next() } // 各リクエスト中に-レスポンスサイクル中にloggerミドルウェアを呼び出します:middleware app.use(logger) // パス「 /”実行されるルート app.get('/', function(req, res) { res.send('This is a basic Example for Express.js by w3codebox') ) // サーバーを起動 var server = app.listen(8000, function(){ console.log('Listening on port 8000...') )
このアプリケーションを起動し、ブラウザで以下のURLをクリックしてください。
http://localhost:8000/
http://localhost:8000/こんにちは-ページ/
出力は以下のようになります
リスニングに8000のアプリケーションの各リクエストに対して、私たちはミドルウェア機能を追加しました。URL http://localhost:8000/URLは/ そのため、loggerの出力は現在時刻と「」です/「URLに対しても同様です」/こんにちは-ページ/「。」