Express.js でのルーティングの説明
この記事は、Express.js に関する大規模なシリーズの一部です.ここですべての記事を見つけることができます - Express Framework .
Express でのルーティング
Routing refers to how an application responds to a client request to a particular endpoint, which is a URI (or a path) and a specific HTTP request method (GET, POST, etc.). Each route can have one or more handler functions, which are executed when the route is matched.
A Route definition takes the following structure: app.METHOD(PATH, HANDLER)
-
app
is an instance of express. -
METHOD
is an HTTP request method, in lowercase. -
PATH
is a path on the server. -
HANDLER
is the function executed when the route is matched.
Let's look at an example of a route /home
that is defined for a GET request.
const express = require('express');
const app = express();
// GET method route
app.get('/home', (req, res) => {
res.send('OK');
});
In the above example:
-
app
is an instance of Express -
app.get
is the HTTP request method -
/home
is the route -
(req, res) => {}
is the handler function, which runs in response to a matching request.
ルート方法
A route method is derived from one of the HTTP methods, and is attached to an instance of the express class. There is a method for every HTTP verb, most commonly used below. For a full list see MDN ..get()
.post()
.put()
.delete()
.patch()
ルート パスのマッチングには多くの可能性がありますが、ルートの選択には制限もあります.完全なリストについては、path-to-regexp のドキュメントを参照してください.
ルートの例をいくつか示します.
このルート パスは、
app.all()
に対するリクエストと一致します.app.all('/secret', (req, res, next) => {
console.log('Accessing the secret section ...');
next(); // pass control to the next handler
});
このルート パスは、
/
に対するリクエストと一致します.app.get('/', (req, res) => {
res.send('root');
});
このルート パスは、
/home
に対するリクエストと一致します.app.get('/home', (req, res) => {
res.send('home');
});
このルート パスは、
/info.text
および /acd
に対して行われた要求と一致します.app.get('/info.text', (req, res) => {
res.send('info.text');
});
このルート パスは、
/abcd
、 abcd
、 abbcd
などに対して行われたリクエストと一致します.app.get('/ab?cd', (req, res) => {
res.send('ab?cd');
});
このルート パスは、
abbbcd
、 abcd
、 abxcd
などに対して行われたリクエストと一致します.app.get('/ab+cd', (req, res) => {
res.send('ab+cd');
});
正規表現はルート パスとして使用できるため、このルート パスは
abANYRANDOMSTRINGcd
を含むリクエストとどこでも一致します.app.get('/ab*cd', (req, res) => {
res.send('ab*cd');
});
Express 4.x では
a
の扱いが異なります.
を参照してください.この動作は、Express 5.x 以降で修正されています.ルートメソッド .all() 特別なルーティング方法があります*。すべての HTTP リクエストのパスでミドルウェア関数をロードするために使用されます。 app.get('/a/', (req, res) => { res.send('/a/'); });
ルート パス リクエスト メソッドを含むルート パスは、リクエストを作成できるエンドポイントを定義します。それらは、文字列、文字列パターン、または正規表現にすることができます。クエリ文字列はルート パスの一部ではありません。 文字 ?、+、*、および () は、対応する正規表現のサブセットです。ハイフン (-) とドット (.) は、文字列ベースのパスによって文字どおりに解釈されます。
Express uses path-to-regexp here および .将来的に専用のエクスプレス ルーティング ブログ記事が作成される予定です.単一の HTTP トランザクションは、要求と応答のサイクルで大まかに説明できます.
req.params
および /users/:userId/books/:bookId
オブジェクトを拡張することは、Express が機能を拡張する方法の大きな部分を占めていますが、要求と応答の処理方法を引き続き制御できます.1 つのコールバック関数で、次のようなルートを処理できます.
app.get(`/users/:userId/books/:bookId`, (req, res) => {
console.log(req.params);
});
関数の配列の例の下:
app.get('/home', (req, res) => {
res.send('home');
});
これらの Route parameters を見てください.
参考文献(そして大きな感謝):
A Route can accept dynamic values within a path, so called route parameters. Route parameters are named URL segments that are used to capture the values specified at their position in the URL. The captured values are populated in the http://localhost:3000/users/34/books/8989
object, with the name of the route parameter as their key.
For example a route path req.params
would require a request URL to be something like { "userId": "34", "bookId": "8989" }
, and the captured route parameters would be populated in next()
like this req
.
To define a route parameter just specify the route parameters in the path.
const cb0 = function(req, res, next) {
console.log('CB0');
next();
};
const cb1 = function(req, res, next) {
console.log('CB1');
next();
};
app.get('/c', [cb0, cb1]);
Route handlers are callback functions or arrays of functions, which basically handle requests. Multiple callback functions can be provided to handle a request and behave like a middleware. The only exception is that these callbacks can call res
to bypass the next and remaining route callbacks. Route handlers can be in the form of a function, an array of functions, or a combination of both.
The request and response are often shortened to req
and res
, and stand for the request which was received by the server, and the response which will eventually be send back.
Reference
この問題について(Express.js でのルーティングの説明), 我々は、より多くの情報をここで見つけました https://dev.to/mariokandut/routing-in-expressjs-explained-e3nテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol