클라이언트&서버 요청/응답 구조

이건우·2025년 3월 24일

웹 프로그래밍

목록 보기
31/43

클라이언트와 서버가 요청과 응답을 주고 받는것을 당연하듯이 받아들이고 있었지만,
그 속에서 어떤 데이터가 오고 가는지에 대해서는 그저 감이나 대략적으로만
알고 있었다는 생각이 들었습니다.

본 글에서는 요청/응답 안에서 어떤 정보가 어떻게 구성되어 있는지에 대해서를
중점으로 다루어 보겠습니다.


기본 흐름 요약

클라이언트(브라우저, 앱 등)

사용자의 행동에 따라 요청을 생성 (ex: 로그인 버튼 클릭)

요청(Request)

HTTP 프로토콜을 사용하여 해당 요청을 서버로 전송됨

서버(Server)

요청을 처리하고 필요한 데이터를 응답에 담아 반환

응답(Response)

클라이언트가 요청에 대한 응답을 받음 (성공/실패, 데이터 등)

클라이언트와 서버의 기본 응답을 요약하자면 위와 같이 동작합니다.
그렇다면 클라이언트에서 보내는 요청은 어떻게 구성되어 있을까요?


요청(Request)의 구성 요소

요소설명
메소드GET, POST, PUT, DELETE 등 해당 요청의 종류를 명시
URL요청 대상 자원의 주소 (/login, /users/1)
헤더요청 정보 (인증 토큰, 타입 등)
바디전송할 데이터 (POST/PUT 등에서 사용)

ex)

POST /login HTTP/1.1
Content-Type: application/json

{
  "username": "gunwoo",
  "password": "1234"
}
  • POST (메소드)
    서버에 리소스를 생성하거나 데이터를 전송할 때 사용하는 HTTP 메소드입니다.
    현재는 POST 방식입니다.

  • /login (URL)
    요청 대상의 경로입니다.
    현재는 로그인 처리를 담당하는 엔드포인트입니다.

  • HTTP/1.1
    사용 중인 HTTP 프로토콜 버전입니다.

  • Content-Type: application/json (헤더)
    요청 본문의 타입을 지정하는 헤더로, 바디에서 보내는 요청에 대한 정보이며,
    현재는 JSON 형식의 데이터를 보낸다는 의미입니다.

  • { "username": "gunwoo", "password": "1234" } (바디)
    클라이언트가 서버에 보내는 데이터입니다.
    현재 로그인에 필요한 사용자 이름과 비밀번호가 포함되어 있습니다.


응답(Response)의 구성 요소

요소설명
상태코드요청 결과 코드로(200, 400, 500 등)
헤더응답 정보 (타입, 쿠키 등)
바디클라이언트가 받을 데이터

ex)

HTTP/1.1 200 OK
Content-Type: application/json

{
  "message": "Login success",
  "token": "abcdefg..."
}
  • HTTP/1.1
    사용 중인 HTTP 프로토콜 버전입니다.

  • 200 OK (상태코드)
    요청 결과 코드로 200 OK 즉, 요청 성공을 뜻합니다.

  • Content-Type: application/json (헤더)
    응답 본문의 타입을 지정하는 헤더로, 바디에서 보내는 요청에 대한 정보이며,
    현재는 JSON 형식의 데이터를 보낸다는 의미입니다.

  • {"message": "Login success","token": "abcdefg..."} (바디)
    서버가 클라이언트에게 보내는 데이터 입니다.
    현재는 로그인이 성공하였다는 메세지와, 인증/인가를 위한 토큰이 담겨 있습니다.


흐름정리

  1. 클라이언트 > 서버
    사용자 요청을 만들어 서버에 전달, 메서드 + URL + 헤더 + 바디로 구성

  2. 서버 > 클라이언트
    요청을 처리하고 적절한 응답을 클라이언트에게 반환, 상태코드 + 헤더 + 바디로 구성

요청과 응답을 각 서버와 클라이언트 부분에서 어떻게 구성하고 어떻게 받을 것인지를
먼저 생각해 보고 기록하며 구성하여 통신에 문제가 최소화 되도록 구성하는 것을
목표로 합시다!

profile
새싹개발자

0개의 댓글