Node.js MiddleWares #2
11377 ワード
app.get()ではなく、他のことを知りましょう.
どんなurlにも役立つミドルウェアです.
アプリケーション用途に移る.
まずミドルウェアを使用し、urlのgetを使用します.
そうすると、新しいページに入りたいときに
ex:)
localhost:4000/lolloloもしそうなら
コンソールには、ユーザーがそのurlに移動することが表示されます.
すべてのルートでこの関数を使用します.
順番が変わったら?
申請やお願いがあれば
expressは、上から下への順序ですべての操作を実行します.
JavaScriptのようです.
expressは、まずリクエストを受信したときにhandleHomeを実行します.
その後、gossipMiddlewareを使用するように設定します.
したがって、コンソールには文は表示されません.
ミドルウェアを上に置くと、すべてのパスに適用されます.
今回はProtectionMiddlewareというミドルウェアを使います.
urlを取得し、urlが
(「入るべからず.」)
またはnext()を呼び出します.
2つのミドルウェアが現れた.
loggerミドルウェアはアプリケーション全体で使用されます.
コンソールはmethodとurlです.ログを記録する役割を果たします.
requestに関するすべての情報を持つrequest objectを使用します.
privateMiddlewareはURL情報を受信し、
仲介者が次の関数を呼び出すのを阻止します.
urlが
ミドルウェアはプロセスを中断し、
next関数
ミドルウェアがnext()を呼び出さなかった場合
次の関数(
このような状況で、loggerは中間戦争になった.
関数がnext()を呼び出すと、ミドルウェアになります.
一部の関数はsendを使用しますが、ミドルウェアではありません.
接続が切れたためです.
次に、ミドルウェアを左から右に順番に実行します.
まず、
次に
コール
しかし、最後は
したがって、
handleHomeもミドルウェアです.
いずれもreq、res、nextを含む.
使用するものもあれば、使わないものもありますが、すべて含まれています.
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を含む.
使用するものもあれば、使わないものもありますが、すべて含まれています.
Reference
この問題について(Node.js MiddleWares #2), 我々は、より多くの情報をここで見つけました https://velog.io/@0_cyberlover_0/Node.js-MiddleWares-2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol