1

Expressを使用する場合、ルート文字列にプレースホルダーを使用してルートを定義できます。たとえば、次のようになります。

app.get("/users/:user_id/photos", function(req,res){<blah>});

次に、ハンドラーreq.params["user_id"]で、URLに含まれているものをすべて取得して、リクエストで使用できます。

ミドルウェアは、そのパスに一致するリクエストのみがミドルウェアを使用するように、特定のパスにマウントできます。ミドルウェアのマウントパスでプレースホルダーを使用できますか?たとえば、次のようなことができますか?

app.use("/users/:user_id/photos", <middleware>);

そして、ミドルウェアの内部には、マップ先のセグメントが何であるかにアクセスする方法があり:user_idますか?

編集1:

私はミドルウェアをルート宣言に直接入れることができることを知っています。

app.get("/users/:user_id/photos", <middleware>, function(req,res){<blah>});

アプリが成長するにつれて、それがどのように手に負えなくなるかを理解するのに、それほど想像力は必要ありません。

4

1 に答える 1

1

ミドルウェアは、追加した順序で連鎖しています。

middleware = function(req,res,next){
  if(valid(req))
    next();
  else
    res.send(400, "Emergerd");
}

// First middleware
app.get("/users/:user_id/photos", middleware);

app.get("/users/:user_id/photos", function(req,res){
  // function after middleware
});
于 2013-02-21T13:37:02.057 に答える