expressのミドルウェア

2311 ワード

一、ミドルウェア構造
1、app.use([path],function)
path:ルーティングのurlで、デフォルトのパラメータ'/'で、このパスにルーティングするときにこのミドルウェアを使用することを意味します.
function:ミドルウェア関数
このミドルウェア関数はfunction(request,response,next)と理解できる.
ここでの取り付けとは、サードパーティ製ミドルウェアの使用にかかわる場合、まず取り付けてから使用する必要があります.
二、中間部品の分類
1、内蔵ミドルウェア
 express.staticは、Expressが現在唯一内蔵しているミドルウェアです.静的リソースファイルを処理します.
app.use(express.static(__dirname + '/public'));

2、カスタムミドルウェア
app.use([path],function)の2番目のパラメータはfunctionである.functionには全部で3つのパラメータ(req,res,next)がある.
各リクエストがサーバに到達すると、nodejsはクライアントから送信されたデータを含むリクエストオブジェクト(request)を作成します.同時に、サーバのデータをクライアントに応答する応答オブジェクト(response)も作成されます.最後のパラメータnextは、1つのアプリケーションで複数のミドルウェアを使用できるため、次のミドルウェアを実行するには、前のミドルウェアがnext()を実行する必要があります.
var express = require('express');
var app = express();
  
app.use(function(request,response,next){
 if(request.url === '/'){
  response.writeHead(200,{"Content-Type":"text/plain"});
  response.end("This is home
"); } else { next(); } }) app.use(function(request,response,next){ if(request.url === '/about'){ response.writeHead(200,{"Content-Type":"text/plain"}); response.end("This is about
"); } else { next(); } }) app.use(function(request,response,next){ response.writeHead(404,{"Content-Type":"text/plain"}); response.end("404 not found!
"); }) app.listen(1234,'localhost');

ブラウザでのアクセス:http://localhost:1234/展示This is home
ブラウザでのアクセス:http://localhost:1234/about 展示This is about、
3、第三者ミドルウェア
body-parser:bodyのデータを解析し、Requestオブジェクトのbodyプロパティとして保存します.
Cookie-parser:クライアントcookieのデータを解析し、Requestオブジェクトのcookieプロパティとして保存します.
express-session:サービス側で生成されたsessionidに対応するsessionデータを解析し、Requestオブジェクトのsessionプロパティとして保存します.
Query:このミドルウェアは、クエリー文字列をURLからJSオブジェクトに変換し、Requestオブジェクトのqueryプロパティとして保存します.
4エラー処理ミドルウェア:
  • エラー処理ミドルウェアの定義は他のミドルウェア関数とほぼ同じであり、エラー処理ミドルウェア関数には4つのパラメータ(err,req,res,next)
  • がある.
  • エラー処理ミドルウェアは、通常、他のすべてのミドルウェアの後にロードされる.
  • Expressには、中間関数セットの末尾に位置するエラー処理ミドルウェアがデフォルトのエラー処理ミドルウェア(プロセッサ)が付属しています.
    app.use(function(err,req,res,next){
      console.log(err.stack);
      res.status(500).send('Something broke!')
      })