Express에서 app.use ()와 router.use ()의 차이점
난 그냥 표현에 대한 설명서를 읽고,이 두 용어를 발견했다 app.use();
및router.use();
나는 경로에 미들웨어app.use();
를 마운트하기 위해 노드 에서 사용하는 것을 대부분의 노드 앱에서 사용합니다. 그러나 router.use();
둘 다 같은 [해석] 무엇 입니까? 대체면 차이점은 무엇입니까?
여기서 라우터에 대해 읽었습니다 . 또한 설문을 찾았습니다. "express.Router"와 "app.get"을 라우팅의 차이점은 무엇입니까? 및 app.all ( '*')과 app.use ( '/')의 차이점은 실제로 내 질문에 대답하지. 감사합니다.
router.get
하위 경로를 정의하기위한 것입니다. 이 예를 고려하십시오.
var router = express.Router();
app.use('/first', router); // Mount the router as middleware at path /first
router.get('/sud', smaller);
router.get('/user', bigger);
- 당신이 열 경우 / 최초 / 타운은 , 그
smaller
함수가 호출 될 것입니다. - 당신이 열 경우 / 처음으로 / 사용자는 다음
bigger
함수가 호출 될 것입니다.
간단히 말해 / 첫 번째app.use('/first', router)
경로에 미들웨어를 마운트 한 다음 그에 따라 하위 경로 를 설정합니다.router.get
그러나 대신 다음을 사용하면 :
app.use('/first', fun);
app.get('/sud', bigger);
app.get('/user', smaller);
- 브라우저에서 / first 를 열면
fun
호출됩니다. - 들어 / 타운 ,
bigger
전화를받을 것 - 들어 / 사용자 ,
smaller
전화를받을 것이다
그러나 / first / sud 어떤 함수도 호출되지 않습니다.
이 링크도 도움이 될 수 있습니다. : http://expressjs.com/api.html#router
router.use();
특정 라우터에서 제공하는 경로에 대해 app.use();
미들웨어를 마운트하고, 앱의 모든 경로 (또는 사용하는 경우 지정된 경로와 일치하는 경로)에 대해 미들웨어를 마운트합니다 app.use('/ANYROUTESHERE', yourMiddleware());
.
사용 사례의 예로는 표준 경로가있는 라우터 하나와 유효한 사용자가 필요한 API 경로를 처리하는 라우터 하나가있는 앱이 있습니다.
그런 다음 .NET으로 만 api 라우터에 대한 인증 미들웨어를 마운트합니다 router.use(yourAuthMiddleware());
.
모든 경로에 유효한 사용자가 필요한 앱이있는 경우 다음을 사용하여 앱용 미들웨어를 마운트합니다. app.use(yourAuthMiddleware());
app.use () 사용하여 미들웨어 함수를 마운트합니다. 요청 된 경로의베이스가 경로와 일치 할 때 미들웨어 함수가 실행됩니다.
router.use ()는 미들웨어 기능에 사용됩니다. 기본 마운트 경로는“/”입니다.
그러나 app.use ()에서는 다음과 같이 지정된 경로를 제공해야합니다.
var adsRouter = require('./adsRouter.js');
app.use('/ads', adsRouter);
또는
app.use('/ads', function(req, res, next) {
// write your callback code here.
});
그러나 router.use ()를 사용하는 동안 다음과 같이 미들웨어 만 제공 할 수 있습니다.
router.use(function(req, res, next) {
console.log('%s %s %s', req.method, req.url, req.path);
next();
});
또는
router.use('/test', function(req, res, next) {
// write your callback code here.
next();
});
또는
//in router.js
router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee);
router.post('/admin', controllerIndex.ads.adListingAdmin);
위의 코드에서 끝 점이 '/ admin'이면 먼저 authUtil.verifySessionId 및 authUtil.verifyLisencee를 호출 한 다음 'admin'끝점과 controllerIndex.ads.adListingAdmin 메서드에 따라 다음 줄을 실행합니다.
참고 URL : https://stackoverflow.com/questions/27227650/difference-between-app-use-and-router-use-in-express
'ProgramingTip' 카테고리의 다른 글
프로그래밍 방식으로 혁신 할 때 ViewPager 애니메이션 기간 변경 (0) | 2020.11.07 |
---|---|
MySQL SELECT DISTINCT 여러 열 (0) | 2020.11.07 |
하이라이트 색상 변경 (0) | 2020.11.07 |
asp.net mvc의 jQuery ajax 업로드 파일 (0) | 2020.11.07 |
새 창에서 Vim에서 새 파일을 여는 방법 (0) | 2020.11.06 |