私はNode.js + Express JSを使用してAPIを開発しました。私はトークンベースの認証を使用しています。Express JS Routerミドルウェア抽象化
私は、このAPIでuserRoute(/ USER)とpostRoute(/ POST)という2種類のルータを使用しました。 postRouteは認証内で使用できますが、userRouteにはトークンが必要です。
は私がuserRouteのためのルータのミドルウェアを使用することを解決するために、それはportRouteと干渉するこれはコードです:
...
var postRoute = express.Router();
var userRoute = express.Router();
// Route middleware to verify a token
userRoute.use(function(req, res, next) {
security.checkToken(req,res, next);
});
userRoute.route('/users')
.get(userCtrl.findAllUsers)
.post(userCtrl.addUser);
postRoute.route('/posts')
.get(userCtrl.findAllPosts)
.post(userCtrl.addPost);
app.use(userRoute);
app.use(postRoute);
...
i 'は/投稿のサーバがアクセスしようとした場合には、トークンをチェックし、私はapp.useの順番を変えるかどうかは知っていますが、それはうまくいきますが、私が "Router Middleware"を使っているなら、なぜこのように動作するのか分かりません。
誰かが知っていますか?
あなたの答えをありがとう。しかし、アプリケーションのミドルウェア「app.use(...)」を登録するときには、ルーターミドルウェア「yourRoute.use(...)」を使用するときにはそうではないという理論があります。そうでない場合、アプリミドルウェアとルータミドルウェアの違いは何ですか? – WikiCode
@WikiCodeもう一度、ソースコード 'node_modules/express/lib/express.js'行をチェックすると、これは' mixin(app、proto、false); 'から理解できます。ミドルウェアをルートに登録したい場合は、 'app.use( '/ users')、function(req、res、next){ security.checkToken(req、res、next); }); 'あなたもここで見ることができます:http://stackoverflow.com/questions/28305120/differences-between-express-router-and-app-get –
@WikiCode多分私はそれについて間違っています!私はvar名と混同しています。私はちょっと戻ってきます。 –