Node.js

Node.js GET요청만들기

svdjcuwg4638 2023. 5. 17. 17:25

서버를 띄우기 위해 작성할 기본 템플릿

 

전 글에서 npm init를 할때 entry point에 server.js라고 적은걸 기억할것이다 그래서 js파일은 server이라고 생성하였다.

위 사진을 보면 왼쪽에 js파일을 새로 만들어줬고

오른쪽에는 pachage.json 우리가 npm init를 하여 만들었던 json파일이다 main에 우리가 입력했던 server.js를 확인할 수 있다.

(server.js 파일)

const express = require('express');
const app = express();

app.listen(8080, function() {
    console.log('listening on 8080')
})

 이렇게 쓰면 서버가 뜬다고 합니다.

굳이 해석해보자면

첫 두줄은 express 라이브러리 첨부와 사용(node_modules폴더에서 express라이브러리를 불러오는 코드이다.),

밑에 app.listen()은 원하는 포트에 서버를 오픈하는 문법이라고 보시면 됩니다.

 

listen() 함수 안엔 두개의 파라미터가 필요합니다. 

listen(서버를 오픈할 포트번호, function(){서버 오픈시 실행할 코드})

이렇게 사용하면 되겠습니다, ( 포트번호는 3천번을 써도되고 6천번을 써도 괜찮다)

 

위 코드를 잘 작성하고 New Terminal 눌러 터미널을 켜서 node server.js를 입력하면 서버가 뜹니다.

브라우저에서 localhost:8080 이라고 접속하면 확인가능합니다. 

 

포트가 뭐죠?

 

여러분 컴퓨터는 항상 외부 컴퓨터와 통신할 수 있게 설계되어있습니다.

랜선을 꽂거나 와이파이를 켜거나 하시면 다른 사람이 여러분 컴퓨터로 접속을 요청할 수도 있고 그렇습니다. 

컴퓨터는 외부와 통신할 수 있는 구멍이 60000개 정도 있습니다. 그리고 이걸 '포트'라고 부릅니다. 

평상시엔 막혀있는데, 여러분이 외부 컴퓨터 접속을 허가하려면 포트를 열어야합니다. 

예전엔

"세이클럽 채팅을 하려면 제 컴퓨터 아이피 주소를 치고 6900 포트로 들어오세요~"

이런 식으로 활용했었습니다. 

 

이와 비슷하게 우리는 무작위로 하나 고른 8080번째 포트를 사용해서 서버를 띄운 것일 뿐입니다. 

이제 외부 컴퓨터가 여러분 아이피 주소:8080이라고 입력하면 여러분 컴퓨터로 들어올 수 있는 것입니다.

즉 내가 포트를 8080으로 설정하면 8080접근을 허용하게된다는 뜻이다.

 

콜백함수에 대해 알아보자

function(){} 이라는 문법은 자바스크립트로 함수를 하나 만들겠습니다~ 라는 뜻입니다.

function 함수이름( ){ }

보통 이렇게 만들어서 사용합니다.

 

그런데 위에서 작성한 코드는 이렇게 되어있습니다. 

.listen(서버를 오픈할 포트번호, function(){서버 오픈시 실행할 코드})

여기서 중요한 문법적 개념 중 하나가 바로 function(){} 부분입니다.

1. 그런데 위의 예제 코드에선 함수명을 작명하는 부분이 없고 function(){} 이렇게 사용하고 있고

2. listen()이라는 함수 안에 함수를 집어넣는 형태로 사용하고 있죠? 

이걸 자바스크립트에선 '콜백함수'라고 부릅니다. 

정의는 함수안에 들어가는 함수입니다. 그게 끝입니다.

 

 

문법시간이 아니니 원리는 패스하고 기능만 설명해드리겠습니다.

콜백함수를 왜 쓰냐면.. 자바스크립트에서 뭔가 순차적으로 실행하고 싶을 때 사용한다고만 아시면 되겠습니다.

listen() 이라는 함수를 동작시킨 다음에 function(){} 내에 있는 코드를 실행해주세요~ 라는 뜻으로 사용한 것입니다.

Node.js 특성상 코드를 연달아서 2개 적는다고 그 코드가 순차적으로 실행된다는 보장이 없기 때문에 (이전강의 참고)

뭔가 순차적으로 실행할 때 '함수안에 함수를 집어넣는 콜백함수'를 꼭 사용합니다.  

알겠죠? 순차적 실행이 목적이고 이 패턴을 눈에 익혀두시면 이제 서버만들 때 문법적으로 어려운게 전혀 없습니다. 

 

GET 요청을 처리하는 기계를 만들어보자

 

서버는 요청을 처리하는 기계라고 말씀드렸습니다.

그럼 요청을 어떻게 하냐면, 바로 브라우저를 켜서 주소창에 URL을 입력하시면 됩니다. 그게 가장 쉬운 요청방법입니다.

이 요청은 전문용어로 GET 요청이라고 합니다. 간단하게 주소창에 URL을 떄려박아서 요청할 수 있는 것이고요.

 

지금부터 뭘 만들건지 네이버로 예를 들면 .. 

swindow.naver.com/pet 으로 접속하면 펫용품 쇼핑페이지가 뜹니다.

swindow.naver.com/beauty 로 접속하면 뷰티용품 쇼핑페이지가 뜹니다.

우리도 이거랑 매우 유사하게 만들어볼겁니다.

 

 

그럼 누군가 우리 서버의 /pet 경로로 접속하면 '펫용품 사세요' 라는 안내메세지를 띄워주는 서버를 만들어보도록 합시다. 

app.get('/pet', function(요청, 응답) { 
  응답.send('펫용품 사시오')
})

이렇게 server.js 하단에 추가하시면 되겠습니다.

그럼 브라우저 켜서 localhost:8080/pet 이라고 접속하면 펫용품 사라는 안내문이 뜨죠?

(응답 추가하거나 수정시 서버를껏다 다시키자 ctrl+c해서 종료후 다시 node server.js)

 

누군가 localhost:8080/beauty로 접속하면 '뷰티용품 사세요' 라는 안내문을 띄워주려면 어떻게해야할까요?

app.get('/beauty',function(req,res){
  res.send('여기는 뷰티페이지입니다.')
});