Multi Developer SuHo

Node js [GET 방식과 POST 방식, 요청 객체(Requset), 응답 객체(Response) ] 본문

Node.js 기록

Node js [GET 방식과 POST 방식, 요청 객체(Requset), 응답 객체(Response) ]

Dreaming Developer Student 2025. 3. 10. 09:14
SMALL

안녕하세요~  오늘은 GET 요청과 POST 요청 그리고 req(요청 객체)와 res(응답 객체)에 대해 간략하게 설명하고자 합니다.

📑목차
1. GET 방식
1-1. GET 방식이란?
1-2. GET 방식에 해당하는 서버 로직 
1-3. GET 방식은 언제 사용되는가?

2. POST 방식
2-1. POST 방식이란?
2-2. POST 방식에 해당하는 서버 로직
2-3. POST 방식은 언제 사용되는가?
3. Request (요청 객체)
3-1. Request (요청 객체란?)
3-2. Request 요청 객체 목록
4. Response (응답 객체)
4-1. Response (응답 객체란?)
4-2. Response 응답 객체 목록

 

서론

먼저 이 글을 들어가기전 프로그래밍에서 GET 방식과 POST 방식에 들어보셨나요? 다른 언어를 하셨거나, 서버 부분을 접해보셨다면 들어보셨을 겁니다. 그래서 이번에는 Node js 에서 GET 방식과 POST 방식을 알아보고,  요청 객체와 응답 객체를 알아보고자 합니다.

본론

1. GET 방식

 

1-1. GET 방식이란?

서버에 데이터를 요청하는 방식이며, URL에 QueryString 형태로 데이터를 담아 서버에게 요청을 보내는 방식

 

1-2. GET 방식에 해당하는 서버 로직 

현재 router에서 get으로 요청하여 각각의 EJS 파일을 렌더링하여 응답하는 코드입니다. 

// express 내부에서 제공하는 Router 라이브러리 사용
const router = require('express').Router();

// get 요청으로 루트 경로 들어오면 main 페이지를 응답한다.
router.get('/', (req, res) => {
    res.render('main');
})

router.get('/coffee', (req, res) => {
    res.render('coffee');
})

router.get('/detail', (req, res) => {
    res.render('detail');
})

module.exports = router;



coffee.ejs 파일입니다. 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    이미지 업로드 페이지~~
    <form action="/coffee" method="get" enctype="multipart/form-data">
        <label for="">제목</label>
        <input type="text" name="title">
        <label for="">내용</label>
        <input type="text" name="content">
        <label for="">이미지 업로드</label>
        <input type="file" name="image">
        <button>저장하기</button>
    </form>
</body>
</html>


현재 이 코드를 보면 form action="coffee" method=get 속성이 있습니다.  GET  방식에는 URL에 QueryString 형태로 데이터를 담아서 웹 서버에게 요청을 보냅니다. 그러면 다음과 같이 기본적으로 form은 submit 이벤트를 발생하기 때문에 입력한 값을 가지고 QueryString으로 보내지게 됩니다. 

이렇게 입렬된 값을 가지고 저장을 누르면 URL에 다음과 같이 데이터가 담깁니다.

 

1-3. GET 방식은 언제 사용되는가?

GET 방식으로는 QueryString 으로 경로에 전달되기 때문에 간단한 검색이나, 데이터를 전송할 때만 사용하는게 좋다

 

그럼 POST 방식은 뭘까요? 알아보시죠~

2.  POST 방식

2-1. POST 방식이란?

POST 방식은 GET 요청과는 달리 데이터를 HTTP 메세지 본문(body)에 담아서 서버에 전송한다.

 


2-2. POST 방식에 해당하는 서버로직 

router.post('/coffee', (req, res) => {
    res.send("POST 방식 요청 메세지!!")
})


2-3 그럼 POST 방식은 언제 사용하나?

POST 방식은 URL의 길이 제한이 없고, HTTP 메세지 본문(body)에 담기 때문에 로그인, 회원가입, 회원정보 수정등을 POST 방식으로 요청하여 HTTP 메세지에 담아두면 된다.

 

전체적인 코드 
coffee.ejs 파일

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    이미지 업로드 페이지~~
    <h1>GET 요청</h1>
    <form action="/coffee" method="get" enctype="multipart/form-data">
        <label for="">제목</label>
        <input type="text" name="title">
        <label for="">내용</label>
        <input type="text" name="content">
        <label for="">이미지 업로드</label>
        <input type="file" name="image">
        <button>저장하기</button>
    </form>
    <h1>POST 요청</h1>
    <form action="/coffee" method="post" enctype="multipart/form-data">
        <label for="">제목</label>
        <input type="text" name="title">
        <label for="">내용</label>
        <input type="text" name="content">
        <label for="">이미지 업로드</label>
        <input type="file" name="image">
        <button>저장하기</button>
    </form>

</body>
</html>


router.js 파일

// express 내부에서 제공하는 Router 라이브러리 사용
const router = require('express').Router();

// get 요청으로 루트 경로 들어오면 main 페이지를 응답한다.
router.get('/', (req, res) => {
    res.render('main');
})

router.get('/coffee', (req, res) => {
    console.log("나야 요청 쿼리",req.query);
    res.render('coffee');
})

router.get('/detail', (req, res) => {
    res.render('detail');
})



router.post('/coffee', (req, res) => {
    res.send("POST 방식 요청 메세지!!")
})

module.exports = router;



server.js 파일

// express 모듈 불러오기
const express = require('express');

// path 모듈 불러오기
const path = require('path');

const router = require('./routers/board.router');

// 서버 객체 생성 
const app = express();

// view engine에 'ejs'를 사용
app.set('view engine', 'ejs'); 

// public 경로를 정적으로 처리하는 미들웨어 추가
app.use("/public", express.static(path.join(__dirname, "public")));

// body(본문)의 내용을 파싱하겠다. 미들웨어 추가
app.use(express.urlencoded({extended : false}));

app.use(router);



app.listen(3000, () => {
    console.log("서버 작동하고 있다");
})

3.  Request(요청 객체)

- 클라이언트로 부터 요청 데이터를 받아온다.

 

3-1. Request (요청 객체란?)

클라이언트로부터 전송된 HTTP 요청에 대한 정보를 담고 있는 객체를 말합니다.

 

3-2. Request 요청 객체 목록 (req.body, req.query, req.headers, req.cookies)


req.body  : HTTP의 본문(body)에 담겨서 전송된 데이터  

req.query : GET 방식으로 넘어오는 쿼리스트링(QueryString)의 정보가 담긴다.
req.headers : HTTP의 헤더정보를 가지고 있다.
req.cookies :  클라이언트가 서버에 전달한 쿠키 정보를 가진다.

 

4.  Response(응답 객체)

- 클라이언트에게 데이터를 전송하는 객체

4-1. Response (응답 객체란?)

서버에서 클라이언트로 응답을 보내기 위한 객체

 

4-2. Response 응답 객체 목록 (res.cookie, res.redirect, res.send, res.json, res.render)
res.cookie : 클라이언트에 저장될 쿠키를 설정하거나 제거
res.redirect : 클라이언트에 재요청을 보낸다
res.send : 클라이언트에 응답을 보낸다
res.json : 클라이언트로 JSON 값을 보낸다
res.render : ejs와 같은 템플릿 엔진을 사용하는 뷰를 렌더링

 

결론

마지막으로 GET 요청과 POST 요청에 대해 알아보았고, 어떤 상황에서 GET 요청과 POST 요청을 써야하는지, 그리고 요청 객체와 응답 객체에 대한 내용들을 살펴보았습니다. 

LIST