[Express]ルーティング、ミドルウェア
12845 ワード
設定
Node.jsをインストールする場合は、作業中のディレクトリにExpressをインストールします.
npm install express
依存オブジェクトをリストに保存するにはnpm install express --save
デフォルトのルーティング
app.METHOD(PATH, HANDLER)
静的ファイルの提供
app.use(express.static('public'))
「public」ディレクトリに含まれるファイル(jpg、js、css、htmlなど)をロードできます.他のディレクトリなどを複数回呼び出すことができます.
ディレクトリは相対的であり、他のディレクトリで実行される場合は、絶対パスを使用するとより安全です.
ルート
メソッドとURL(/lower、/upperなど)を使用してブランチポイントを作成することをルート(Routing)と呼びます.
Express基本ルーティングの例
const express = require('express'); // Express 모듈 사용
const app = express(); // 서버 작성
const ip = 'localhost';
const port = 3000;
// 클라이언트의 get요청의 응답
app.get('/', function(req, res) {
res.send('hello world');
});
// 클라이언트의 post요청의 응답
app.post('/', function (req, res) {
res.send('POST request to the homepage');
});
// 들어야할 ip와 포트넘버를 콘솔에 출력
app.listen(port, (err) => {
// 에러 출력
if(err) return console.log(err);
// ip와 포트넘버 출력
console.log(`server listening on ${ip}:${port}`);
})
ミドルウェア
リクエストに必要な機能を追加するか、問題を発見した不良品を除外します.
前述したように、ミドルウェアはプロセスの中間に参加し、特定のロールを実行します.
ミドルウェアの構成
上のミドルウェアの内部では何もしていません.next()関数を呼び出して次のミドルウェアにデータを転送するだけです.
常用ミドルウェア
logger
すべてのリクエストをチェックするurlまたはメソッド.
// 생략
let logger = (req, res, next) => {
console.log(`http request method is ${req.method}, url is ${req.url}`);
next();
};
app.use(myLogger);
// 생략
特定のenpointではなく、すべてのリクエストに同じミドルウェアを適用する場合は、use
メソッドを使用します.body-parser
構造化POST要求等に含まれる負荷.
body-parserで処理できるボディフォーマットはjson、デフォルトテキスト(テキスト)、bufferです.
const jsonParser = express.json()
// 생략
app.post('/api/users', jsonParser, function (req, res) {
// req.body에는 JSON의 형태로 payload가 담겨져 있다.
})
cors
すべての要求/応答にCORSヘッダを付けるために使用されます.
const cors = require('cors')
// 생략
app.use(cors())
const cors = require('cors')
// 생략
app.get('/products/:id', cors(), function (req, res, next) {
res.json({msg: 'This is CORS-enabled for a Single Route'})
})
Token検証に合格するかどうか
認証要求ヘッダーにユーザー認証情報が含まれているかどうかを確認します.
HTTPリクエストにタグがあるかどうかを判断し、ログインしたユーザーが成功またはログインしていないときにエラーを送信するミドルウェアの例.
app.use((req, res, next) => {
if(req.headers.token){
req.isLoggedIn = true;
next()
} else {
res.status(400).send('invalid user')
}
})
Reference
この問題について([Express]ルーティング、ミドルウェア), 我々は、より多くの情報をここで見つけました https://velog.io/@tyoon225/Node.js-Expressテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol