/ login을 제외한 모든 경로 포착
저는 현재 사용자가 각 요청의 헤더에 인증 토큰을 전달해야하는 API를 작성 중입니다. 이제 포괄 경로를 만들 수 있다는 것을 알고 있습니다.
app.get('/*', function(req,res){
});
하지만 /login
또는 같은 특정 경로를 제외하도록 어떻게 만들지 궁금합니다 /
.
사용자가 /login
또는 /
에 액세스 할 때 어떤 일이 발생하고 싶은지 잘 모르겠지만 별도의 경로를 만들 수 있습니다. catch-all 전에 선언하면 들어오는 요청을 처리 할 때 첫 번째 딥이 발생합니다.
app.get('/login', function(req, res) {
...
});
app.get('/', function(req, res) {
...
});
app.get('*', function(req, res) {
...
});
제외하려는 경로 뒤에 항상 포괄 경로를 배치 할 수 있습니다 ( robertklep 답변 참조 ).
그러나 때로는 경로의 순서에 관심이 없을 때가 있습니다. 이 경우에도 원하는 작업을 수행 할 수 있습니다.
app.get('*', function(req, res, next) {
if (req.url === '/' || req.url === '/login') return next();
...
});
모든 요청에서 자격 증명 또는 신뢰성을 확인하려면 Express Routing 기능 "all"을 사용해야합니다. 다음과 같이 사용할 수 있습니다.
app.all('/api/*', function(req, res, next){
console.log('General Validations');
next();
});
라우팅 항목 앞에 배치 할 수 있습니다.
이 경우 "/ api / "를 경로로 사용 했으므로 필요에 맞게 "/ "를 사용할 수 있습니다 .
여기 누군가를 돕는 것이 너무 늦지 않았기를 바랍니다.
포괄 경로 핸들러를 만드는 또 다른 방법은 다음과 같습니다.
app.get('/login', function(req, res) {
//... login page
});
app.get('/', function(req, res) {
//...index page
});
app.get('/:pageCalled', function(req, res) {
console.log('retrieving page: ' + req.params.pageCalled);
//... mypage.html
});
이것은 robertklep의 (허용되는) 답변과 똑같이 작동하지만 사용자가 실제로 요청한 것에 대한 자세한 정보를 제공합니다. 이제 req.params.pageCalled
요청되는 페이지를 나타내는 슬러그 가 있으며 여러 페이지가있는 경우 사용자를 적절한 페이지로 안내 할 수 있습니다.
One gotchya to watch out for (thx @agmin) with this approach, /:pageCalled
will only catch routes with a single /
, so you will not get /route/1
, etc. Use additional slugs like /:pageCalled/:subPageCalled
for more pages (thx @softcode)
참고URL : https://stackoverflow.com/questions/19313016/catch-all-route-except-for-login
'Programing' 카테고리의 다른 글
오류 : psycopg2.extensions라는 모듈이 없습니다. (0) | 2020.11.10 |
---|---|
Pandas 집계 함수에서 반환 된 열의 이름을 지정 하시겠습니까? (0) | 2020.11.10 |
Bash에서 재귀 적으로 파일 확장자 변경 (0) | 2020.11.10 |
C ++ 템플릿에서 유형의 이름 가져 오기 (0) | 2020.11.10 |
switch 문의 여러 값에 대한 PowerShell 구문은 무엇입니까? (0) | 2020.11.10 |