[NodeJS] Get, Post의 특징

2023. 12. 21. 12:07BE/NodeJS

728x90

들어가기

NodeJS에서 라우팅을 get 방법으로 받을 수도 있고, post 방법으로 받을 수도 있다. 이것에 대해 알아보자

우선 아래와 같이 3000번 포트, '/form'라우팅을 이용하여 아이디와 비밀번호를 입력하여 제출하는 웹페이지가 있다고 가정하자.

'/form' 웹페이지에서 제출 버튼을 누르면 '/form_receiver' 웹페이지로 라우팅된다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <form action="/form_receiver" method="POST">
      <p>ID를 입력하세요.</p>
      <p>
        <input type="text" name="id">
      </p>
      <p>PASSWARD를 입력하세요.</p>
      <p>
        <textarea name="passwd"></textarea>
      </p>
      <p>
        <input type="submit">
      </p>
    </form>
  </body>
</html>

Get

get을 이용하여 라우팅 하는 경우의 코드는 아래와 같다.

app.get('/form_receiver', function(req, res){
    var id = req.query.id;
    var passwd = req.query.passwd;
    res.send(id + ',' + passwd);
})

'/form' 페이지에서 제출한 결과는 아래와 같다.

위의 그림과 같이 쿼리스트링(https://gitdeep.tistory.com/73)으로 입력한 아이디와 패스워드가 노출되는 것을 볼 수 있다.

POST

post를 이용하여 라우팅 하는 경우의 코드는 아래와 같다.

app.post('/form_receiver', function(req, res){
    var id = req.body.id;
    var passwd = req.body.passwd;
    res.send(id + ',' + passwd);
})

'/form' 페이지에서 제출한 결과는 아래와 같다.

위의 그림과 같이 쿼리스트링(https://gitdeep.tistory.com/73)으로 입력한 아이디와 패스워드가 노출되지 않는 것을 볼 수 있다.

정리

post를 이용하여 라우팅을 하였을 때, get과 비교하여, 보안성이 높다는 장점(e.g. post로 라우팅하는 경로로 바로 접속할 수 없다.)이 있다. 하지만, get는 NodeJS에서 기본적으로 지원하는 반면, post는 미들웨어를 통해 통신할 수 있다는 불편한 점이 존재한다. 

예를들어서 express같은 경우 아래와 같은 코드를 작성하여야 post로 통신할 수 있다. (참고: https://expressjs.com/en/4x/api.html#req.body)

app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.post('/form_receiver', function(req, res){
    var id = req.body.id;
    var passwd = req.body.passwd;
    res.send(id + ',' + passwd);
})

[참고]

https://www.inflearn.com/course/nodejs-%EA%B0%95%EC%A2%8C-%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9/dashboard

'BE > NodeJS' 카테고리의 다른 글

[NodeJS] 동기와 비동기 작업  (0) 2023.12.20