Node.js MiddleWares #2


app.get()ではなく、他のことを知りましょう.app.use()は、グローバルミドルウェアの作成を可能にする.
どんなurlにも役立つミドルウェアです.
アプリケーション用途に移る.
app.use(gossipMiddleware);

app.get("/", handleHome);
気をつけなければならないのは順番です.
まずミドルウェアを使用し、urlのgetを使用します.
そうすると、新しいページに入りたいときに
ex:)
localhost:4000/lolloloもしそうなら
コンソールには、ユーザーがそのurlに移動することが表示されます.
すべてのルートでこの関数を使用します.
順番が変わったら?
app.get("/", handleHome);

app.use(gossipMiddleware);
コンソールに表示されているsomeone is going to:/文が出ません.
申請やお願いがあれば
expressは、上から下への順序ですべての操作を実行します.
JavaScriptのようです.
expressは、まずリクエストを受信したときにhandleHomeを実行します.
その後、gossipMiddlewareを使用するように設定します.
したがって、コンソールには文は表示されません.
ミドルウェアを上に置くと、すべてのパスに適用されます.
今回はProtectionMiddlewareというミドルウェアを使います.
const app = express();

const logger = (req, res, next) => {

console.log(`${req.method} ${req.url}`);

next(); 

 };

const privateMiddleware = (req, res, next) => {

const url = req.url;

if (url === "/protected") {

return res.send("<h1>Not Allowed </h1>");

}

next();

 console.log("Allowed, you may continue.");

};

const handleHome = (req, res) => {

return res.send("<h1>I love middlewares.😍</h1>");

};

const handleLogin = (req, res) => {

return res.send({ message: "Login here." });

};

 const handleProtected = (req, res) => {

return res.send("Welcome to the private lounge.");

};

app.use(logger);

app.use(privateMiddleware);

app.get("/", handleHome);
こうしましょう
urlを取得し、urlがprotectedに等しい場合、res.send()を使用してhtmlを返します.
(「入るべからず.」)
またはnext()を呼び出します.
2つのミドルウェアが現れた.
loggerミドルウェアはアプリケーション全体で使用されます.
コンソールはmethodとurlです.ログを記録する役割を果たします.
requestに関するすべての情報を持つrequest objectを使用します.
privateMiddlewareはURL情報を受信し、/protectedなどの内容を検証します.
仲介者が次の関数を呼び出すのを阻止します.
urlが/protectedでない場合、次の関数が呼び出されます./protectedページに移動すると、ミドルウェアがコントローラになります.
ミドルウェアはプロセスを中断し、Not Allowedの文を発行します./protectedページに行き、loggerを通り、privateMiddlewareを通り、止まりました.handleHomeまたはhandleProtectedにはなりません.middlewareは一般的なcontrollerと同じです.
next関数argumentの追加に加えて、app全体の任意のurlにmiddlewareを使用してもよいし、middlewareの1つのurlにのみ使用してもよい.
 app.use(logger);

app.get("/", logger, handleHome);

app.get("/protected", logger, handleProtected);
このようにして.
ミドルウェアがnext()を呼び出さなかった場合
次の関数(handleProtectedまたはhandleHomeなど)は、絶対に実行されません.
app.get("/protected", logger, handleProtected);
ここでの関数は、ミドルウェアまたはコントローラであってもよい.
このような状況で、loggerは中間戦争になった.
関数がnext()を呼び出すと、ミドルウェアになります.
一部の関数はsendを使用しますが、ミドルウェアではありません.
接続が切れたためです.
次に、ミドルウェアを左から右に順番に実行します.
まず、logger가 next()を呼び出すと、最初の関数が実行されるルーティングがあります.
次にhandleHomeを実行します.
コールhandleHome이 next()は、次の実行を実行する.
しかし、最後はhandleHomeだった.
したがって、handleHomeではres.sendが使用される.
handleHomeもミドルウェアです.
いずれもreq、res、nextを含む.
使用するものもあれば、使わないものもありますが、すべて含まれています.