[解決済み] express.js - 複数のルートを一行で処理するルーティングハンドラ
質問
これを1回の関数呼び出しで作る方法はないでしょうか?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
みたいな感じ。
app.get("/", "/blabla", "/blablablabla", todo );
これは構文がめちゃくちゃですが、私が実現したいことのイメージを与えるために、ルートの配列があれば最高です!
誰かこれを行う方法を知っていますか?
どのように解決するのですか?
私は同じ機能を探しているときに、この質問に遭遇しました。
Jonathan Ong 氏は上記のコメントで、パスに配列を使用することは非推奨であると述べていますが、Express 4 では明示的に記述されており、Express 3.x でも動作します。
app.get(
['/test', '/alternative', '/barcus*', '/farcus/:farcus/', '/hoop(|la|lapoo|lul)/poo'],
function ( request, response ) {
}
);
の内側から
request
オブジェクトの内部で、パスが
/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:
"route": {
"keys": [
{
"optional": false,
"name": "farcus"
}
],
"callbacks": [
null
],
"params": [
null,
null,
"lul"
],
"regexp": {},
"path": [
"/test",
"/alternative",
"/barcus*",
"/farcus/:farcus/",
"/hoop(|la|lapoo|lul)/poo"
],
"method": "get"
},
params で何が起こるかに注意してください。現在のリクエストで使われているかどうかに関わらず、すべての可能なパスにおけるキャプチャグループとパラメータを認識します。
そのため、配列を介して複数のパスを重ねることは簡単にできますが、パラメータやキャプチャグループによって使用されたパスから有用なものを拾おうとしている場合、副作用はおそらく予測不可能です。おそらく、冗長性/エーリアシングのために有用であり、その場合は非常にうまく機能するでしょう。
編集: @c24w の回答も参照してください。 以下の .
編集2:これは中々人気のある回答です。ExpressJSは、ほとんどのNode.jsライブラリと同様に、移動可能なごちそうであることを心に留めておいてください。上記のルーティングはまだ動作しますが(私は現在それを使用しており、非常に便利な機能です)、私はリクエストオブジェクトの出力を保証することはできません(それは私が説明したものとは確かに異なっています)。望む結果を得るために慎重にテストしてください。
関連
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】モジュール 'internal/util/types' が見つかりません。
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] NPMが同じエラーで固まる EISDIR: ディレクトリに対する不正な操作、エラーで読み込み (ネイティブ)
-
[解決済み] 複数のスペースを1つのスペースに置き換える正規表現
-
[解決済み】Node.js / Express.js - app.routerはどのように動作するのですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Node.jsのエラーECONNRESETをデバッグするにはどうすればよいですか?
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
webpack ENOENTソリューションの起動
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み】npm 5で作成されたpackage-lock.jsonファイルはコミットするのでしょうか?
-
[解決済み] Expectアサーションの型エラー -> expect(...).toExistは関数ではない
-
[解決済み] MongoDB でコレクションを日付順に並べるには?
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] エラーです。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりません。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?