Node.js 미들웨어 및 외부 액세스

좋습니다. 우리는 이미 production server을 가지고 있으며 그것이 어떻게 작동하는지 더 잘 이해하기 위해 some tasks을 수행했습니다. 이제 middleware 의 가장 중요한 개념 중 하나인 Express.js 를 살펴보겠습니다.

미들웨어



요청이 server.get 에서 두 번째 매개변수로 지정한 핸들러 함수에 도달하기 전에 다른 함수 체인을 통과합니다. 이러한 각각의 기능과 모든 기능을 middleware 라고 합니다.
middleware 를 사용하여 이러한 use 함수를 추가할 수 있습니다.

server.use((req, res, next) => {
  console.log(`Received ${req.method} request!`);
  next();
})


이 몇 줄의 코드를 프로젝트에 추가하면 브라우저에서 Received GET request! 페이지를 새로 고칠 때마다 콘솔에 localhost:8080 메시지가 표시됩니다. req.method 필드는 HTTP 요청의 유형을 저장합니다(이 경우에는 GET ).

Middleware functions have 3 parameters. The last one, next, is a service function that needs to be called if you want to continue moving the request through the middleware stack and beyond.



경우에 따라 일부 요청이 경로 처리기에 도달하기 전에 필터링하고 싶을 수 있습니다. 좋은 예는 권한 부여 프로세스입니다. 요청에 암호 또는 비밀 키를 수락하고 확인된 요청만 허용할 수 있습니다.

const checkSecretKey = (req, res, next) => {
  if (!req.query.secretKey || req.query.secretKey !== 'TistRIanDsMOUnca') {
    return res.status(403).send('Secret key is missing or incorrect');
  }
  next();
}


여기에서 요청에 secretKey 필드가 있는지 확인하고, 그렇다면 해당 값을 확인합니다. 확인에 문제가 있는 경우 상태403 및 메시지Secret key is missing or incorrect를 다시 보냅니다. 모든 것이 정상이면 next() 함수 호출을 사용하여 요청을 추가로 보냅니다.

동일한 checkSecretKey 함수를 사용하여 middleware 함수를 use 스택에 추가할 수 있습니다.

app.use(checkSecretKey);


자신을 테스트하려면 요청 유형을 로깅하기 전에 먼저 개인 키 확인을 추가한 다음 그 후에 시도하십시오. 어떤 경우에는 콘솔에 출력이 표시되고 다른 경우에는 표시되지 않습니다. 이유를 이해합니까?

쿼리 문자열이란 무엇입니까



이전 예제에서는 req.query 쿼리 문자열에 액세스하려고 했습니다. 여기에는 기본 경로와 물음표 뒤에 지정하는 모든 매개변수가 포함됩니다.

localhost:8080/about?secretKey=123&name=jack


이 예에서 쿼리 문자열은 secretKey=123&name=jack 입니다. secretKeyname 의 두 매개변수로 구성됩니다.
Express.js는 후드 아래에서 그것을 디코딩하고 req.query에서 멋진 객체를 제공합니다. 이는 다음과 같습니다.

{
  secretKey: 123,
  name: 'jack',
}


반 단계 뒤로 돌아가 올바른 secretKey를 사용하여 서버에 요청을 보내십시오. 우리의 인증이 작동하고 서버에 대한 액세스 권한을 얻어야 합니다.

외부 세계 및 로컬 터널에서의 액세스



지금은 로컬 컴퓨터에서만 새 백엔드와 통신할 수 있습니다. 다른 장치와 외부 사용자가 귀하의 서버와 통신하려면 강의 맨 처음에 있는 링크에서 외부 IP 주소localhost로 간단히 교체할 수 없습니다. 더 정확하게는 기술적으로는 가능하지만 이렇게 하려면 3페이지의 지침을 거쳐야 합니다. 당신이 중간에 도달하기 전에 잠들었을 것이라고 확신합니다.

다행스럽게도 npm 라는 매우 편리한 localtunnel 패키지가 있습니다. 다음과 같이 말할 수 있습니다. "내 백엔드는 포트 8080에서 내 컴퓨터에서 실행 중입니다. 모든 사람이 사용할 수 있도록 만드십시오."마술처럼 들리지만 괜찮습니다. localtunnel는 인터넷의 모든 사용자가 백엔드를 사용할 수 있도록 주소를 제공합니다.
localtunnel here 설치 지침을 찾을 수 있습니다. 그러나 전체 프로세스를 단계별로 보여 드리겠습니다.
  • 터미널을 열고 이 명령을 입력하여 전역적으로 localtunnel를 설치합니다.

  •    npm install -g localtunnel
    


  • 포트 8080(또는 기타 사용 가능한 포트)에서 백엔드 실행
  • 터미널로 돌아가서 쓰기

  •    lt --port 8080
    


    이 명령을 실행하면 메시지가 표시됩니다.

       your url is: https://bright-pug-55.loca.lt
    


    물론 URL은 다르지만 휴대폰이나 인터넷에 연결된 다른 장치의 웹 브라우저에 입력하면 먼저 시작 페이지가 표시됩니다.



    그리고 Click to Continue 를 클릭하면 이전에 localhost:8080 에서만 사용할 수 있었던 것과 동일한 내용이 표시됩니다.

    Learn Full-Stack JavaScript

    좋은 웹페이지 즐겨찾기