2012-06-14 10 views
16

Expressで、私はいくつかのルート傍受する方法Node.jsの明示の請求は

app.post("/api/v1/client", Client.create); 
app.get("/api/v1/client", Client.get); 
... 

私はクライアントのコントローラ内部のリクエストを処理する方法を定義しているが定義されています。コントローラで処理する前に、要求にいくつかの前処理を行う方法がありますか?私は特に、アクセスレベルの概念を使用して、API発信者がルートにアクセスする権限を持っているかどうかをチェックしたいと考えています。アドバイスをいただければ幸いです。

+0

あなたの要求を正しい応答にマッサージするミドルウェアである多くの手で、マッサージ器としてconnect/expressを考えましょう。 Ryan Oldsが言っていることは100%正確です。 ;) – Pickels

答えて

39

あなたはいくつかの方法で必要なものを行うことができます。

これは、ルータに当たる前に使用されるミドルウェアを配置します。その後、ルータにapp.use()が追加されていることを確認してください。ミドルウェアの順序は重要です。

app.use(function(req, res, next) { 
    // Put some preprocessing here. 
    next(); 
}); 
app.use(app.router); 

ルートミドルウェアを使用することもできます。

var someFunction = function(req, res, next) { 
    // Put the preprocessing here. 
    next(); 
}; 
app.post("/api/v1/client", someFunction, Client.create); 

これは、そのルートの前処理ステップを実行します。

注:app.use()の呼び出しが経路定義の前にあることを確認してください。ルートを定義すると、自動的にapp.routerがミドルウェアチェーンに追加され、ユーザー定義のミドルウェアの前に配置される可能性があります。

+0

ありがとう、これはすばらしい答えです! –

+0

美しい!ありがとう、Ryan – luigi7up

+0

@ ryan-olds、どのように 'Content-Type'をチェックしますか?私はすべての応答ではなく、JSONでのみ有効期限を設定する必要があります。 –

関連する問題