라우터에 부모 접미어로 /users
경로가 있습니다. 이후의 모든 경로는 부모를 추가합니다 (예 : 내 app.js에서 /users/details
명시 적으로 미들웨어를 적용합니다
내 userRoutes에서
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을 추가 할 수있는 방법이 있나요 미들웨어를 상위 접두사 경로에 연결 한 다음 하나의 특정 경로에 대해 예외가 발생하면 세 번째 미들웨어 만 적용되고 처음 두 개는 적용되지 않습니다.
예 : app.use ('/ api/v1/users', authenticateRoute, aclAuthenticator, userRoutes);
나의 새로운 라우터 파일
router.get('/details', applyOnlyThisMiddleWare, users.getDetails);
router.get('/posts', No MiddleWareAtAll, users.getPosts);
나는 기본적으로 초기 미들웨어를 오버라이드 (override)하는 것을 시도하고,이 가능할까요? 이러한 미들웨어의 각,
router.use(middleware1, middleware2);
그런 다음 URL의 경로를 확인 :
이 코드로 인해 코드가 엉망이됩니다. 경로 기반 검사는 혼란을 일으 킵니다. 또한 정규 표현식을 통해 수행되어야합니다. 만약 내가'/ user/1' 경로를 가지고 있다면 이것은 계속 바뀌어 질 것입니다. –
@NitishPhanse - 당신이 묘사 한 것을 위해, 그것은 두 개의 경로에 하나의 코드 라인이 추가 될 것입니다. 경로 정의는 배타적이지 않고 포괄적 이도록 만들어져 있으므로 어떻게 할 것인지 다른 방법을 모르겠습니다. 주변 환경을보다 깔끔하게 정리하면 URL 디자인을 수정하여 처음에는이 상황을 만들지 않아도되므로 미들웨어 3은 미들웨어 1과 미들웨어 2 (예 : 전체 라우터 에서처럼)에서 쉽게 분리 할 수 있습니다. – jfriend00
귀하의 주장에 완전히 동의하십시오. 예외 목록이 늘어나서 10 개의 URL을 처리하면 배열을 처리해야하는지 궁금합니다. 이 URL을 처리 할 수있는 URL 구조는 무엇입니까? –