[解決済み] Express-jsのワイルドカードルーチングで、パス以下とパスを含むすべてをカバーする。
2022-09-18 05:08:57
質問
1つのルートで、以下のすべてをカバーしようとしています。
/foo
を含む
/foo
そのものです。私は
/foo*
を使ってみましたが、これはすべてに対して機能します。
を除いて
にはマッチしません。
/foo
. 観察してください。
var express = require("express"),
app = express.createServer();
app.get("/foo*", function(req, res, next){
res.write("Foo*\n");
next();
});
app.get("/foo", function(req, res){
res.end("Foo\n");
});
app.get("/foo/bar", function(req, res){
res.end("Foo Bar\n");
});
app.listen(3000);
出力します。
$ curl localhost:3000/foo
Foo
$ curl localhost:3000/foo/bar
Foo*
Foo Bar
私のオプションは何でしょうか?私が思いついたベストは
/fo*
をルーティングすることです。もちろん、これはあまりに多くのマッチングを行うため、あまり最適ではありません。
どのように解決するのですか?
2つのルートを持つ必要があると思います。コネクタルータの331行目を見ると、パスの*は.+に置き換えられているので、1文字以上とマッチします。
https://github.com/senchalabs/connect/blob/master/lib/middleware/router.js
同じアクションを実行する2つのルートがある場合、次のようにしてそれを維持することができます。 DRY .
var express = require("express"),
app = express.createServer();
function fooRoute(req, res, next) {
res.end("Foo Route\n");
}
app.get("/foo*", fooRoute);
app.get("/foo", fooRoute);
app.listen(3000);
関連
-
[解決済み】「安全なTLS接続が確立される前にクライアントのネットワークソケットが切断されました」(ノード10
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] ランタイム 'node' が PATH で見つからない - Visual Studio Code と Node.js
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] DynamoDBで一括削除するにはどうしたらいいですか?
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 console.logの出力をどこに永久保存するか?
-
[解決済み】Nodejsの解決方法:Error: ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] nodeファイルの先頭にある"/usr/bin/env node "は、具体的には何をするのですか?
-
[解決済み] nodejs - http.requestでresponse.writeを使用する場合、第一引数は文字列またはBufferでなければなりません。
-
[解決済み] TypeErrorです。リクエストパスにエスケープされていない文字が含まれています。
-
[解決済み] Yarn にパッケージを強制的に再インストールさせるにはどうしたらいいですか?
-
[解決済み] Json Web Token verify() return jwt malformed
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?