rewriting:リクエストが特定のエンドポイントで受信されると、HTTPサーバーが処理できるものに書き換えられます。 Expressで
、カスタムミドルウェア機能使用していることを行うことができます。
app.use(function(req, res, next) {
// If the current request doesn't start with `/api`...
if (req.url.indexOf('/api') !== 0) {
// ...rewrite it by prefixing it with `/api`.
req.url = '/api' + req.url;
}
next();
});
するとあなたはそれが彼らの前に呼び出されるので、あなたのルートの前にそれを含める必要があります。
これはクライアントにとって完全に透過的です。内部では/api/posts
ハンドラで処理されていても、/posts
の応答が返されていると考えられます。
あなたはそれが明示的になりたい場合は、リダイレクトによっては、次のように使用することができます。
app.use(function(req, res, next) {
if (req.url.indexOf('/api') !== 0) {
return res.redirect('/api' + req.url);
}
next();
});
これは全く透明ではありません。クライアントに:「ねえ、/posts
をリクエストしようとしましたが、代わりに/api/posts
に「」にリクエストする必要があります。これは、クライアントによって追加の要求が行われなければならないことを意味します。
プロキシは、基本的には書き換えを行うための手の込んだ方法ですが、実際の内部HTTP要求は/api/posts
に行われ、その結果が正しいハンドラで終わるように変更されます。クライアント。あなたの状況では、それは過剰です(プロキシは一般的に他の HTTPサーバーに要求を渡すために使用されます)。