私はルータの親サフィックスとしてルート/users
を持っています。その後のすべてのルートが親を追加します。私userRoutesで/users/details
明示的にミドルウェアを適用します
app.use('/api/v1/users', userRoutes);
import express from 'express';
import users from '../controllers/user_controller';
import { authenticateRoute, authenticateSignedRoute, aclAuthenticator } from './../middlewares/AuthenticationMiddleware';
const router = express.Router();
//user routes
router.get('/details', authenticateRoute, aclAuthenticator, users.getDetails);
router.get('/posts', authenticateRoute, aclAuthenticator, users.getPosts);
module.exports = router;
私は
をやりたいものを私はauthenticateRouteとaclAuthenticatorを追加するための方法はありますミドルウェアを親のプレフィックス付きルートに追加した後、ある特定のルートに対しては、最初の2つではなく3つ目のミドルウェアのみが適用されるという例外があります。
例: app.use( '/ api/v1/users'、authenticateRoute、aclAuthenticator、userRoutes);
私の新しいルータファイル
router.get('/details', applyOnlyThisMiddleWare, users.getDetails);
router.get('/posts', No MiddleWareAtAll, users.getPosts);
私は基本的に最初のミドルウェアをオーバライドしようとしている、これは可能ですか?
router.use(middleware1, middleware2);
次に、これらのミドルウェアのそれぞれに、URLのパスを確認してください。それを行うには私の知っている
これは実際にはコードが厄介なものにしますが、ルートベースのチェックでは混乱が生じます。また、それは正規表現の権利を介して行う必要があります。 '/ user/1'のパスがある場合、これは正しく変更されます。 –
@NitishPhanse - あなたが記述したところでは、それは2つのルート(コードのラインを参照してください私の答えに追加してください)でコードの行を追加されます。ルート定義は包括的で排他的ではありませんので、他にどのように行うのか分かりません。より洗練された方法でURLデザインを修正し、最初にこの状況を作成しないようにすることで、ミドルウェア3とミドルウェア2(別個のルータ全体のように)をより簡単に分離できるようにします。 – jfriend00
あなたの意見に完全に同意します。例外リストが増えて10のURLになったら、配列を処理する必要があるかどうかは不思議に思っていました。これを処理できるURL構造は何ですか? –