HTTP 메서드와 상태 코드

최민수·2023년 3월 16일
0

CS 전공지식

목록 보기
16/36
post-thumbnail

movie

백엔드 개발자에게 HTTP 에 대한 어느 정도의 이해는 반드시 필요하다고 생각한다. 적어도 클라이언트와 서버 간의 Request, Response 그리고 중요한 http 메서드와 상태 코드에 대해 아는 것이 개발에 있어 중요한 요건이 아닌가 싶다.

그렇기에, 이번 기회에 간단히 정리해 보기로 하였다.


웹 브라우저에서 리소스를 어떻게 가져올까

Note) 리소스란?

리소스란 URL을 검색해서 받아온 텍스트, HTML, 이미지 등의 서버로부터 받아온 데이터들을 뜻한다.

구글 검색창에 배민을 검색한 상황)

  1. 클라이언트(웹 브라우저)는 구글 서버에게 HTTP 요청 메세지를 패킷(TCP/IP)에 담아 전달.
  2. 구글 서버는 전달받은 메세지를 분석해서 처리를 한 후 HTTP 응답 메세지를 패킷에 담아 웹 브라우저에게 전달.
  3. 웹 브라우저는 전달 받은 데이터를 화면에 보여줌.

HTTP 메세지?

구조는 아래 그림과 같다.
요청과 응답 메세지는 start-line의 구조가 다른데, 이점을 살펴 보자.

  • 요청 메세지는 GET /search?q=baemin HTTP/1.1 과 같이 HTTP 메서드, 쿼리, HTTP 버전으로 구성된다.
  • 응답 메세지는 HTTP/1.1 200 OK와 같이 HTTP 버전, 상태 코드, 상태 문구로 구성된다.

주요 HTTP 메서드에 대해 알아보자

가장 빈번하게 사용되는 메서드에는 GET, POST, PUT, PATCH, DELETE 가 있다.
각각이 무엇에 쓰이는 메서드인지는 기초적인 개념이기에 여기에서는 PUTPATCH의 다른 쓰임새에 대해 알아보기로 한다.

먼저 PUT은 리소스를 완전 대체시키라는 요청이다. 따라서,

{
  "name": "pepsi",
  "price": 2000
}

과 같은 json 정보에 대해 오직 "name" 필드를 "코카콜라"로 바꾸어서 보낸다면

{
  "name": "코카콜라"
}

이렇게 "price"에 대한 필드는 누락되어 덮어 씌워지게 될 것이다.

하지만 같은 요청을 PATCH로 보낸다면, 데이터의 부분 수정이 가능하다.

{
  "name": "코카콜라",
  "price": 2000
}

즉, 이와 같은 결과로 이어질 것이다.


HTTP 상태 코드

상태코드는 클라이언트에서 보낸 요청의 처리 상태가 어떻게 되었는지를 응답 메세지로 알려주기 위해 사용하는 코드이다.

100번대 ~ 500번대 로 이루어져 있다. 각각의 특징을 간략히 알아보자.

개발할 때, 상태 코드에 대한 설명이 필요하면 그때 그때 검색해서 찾아보면 되므로 아래 코드들을 모두 외울 필요는 없다. 그냥 알고 있기만 하자.

  • 1xx (정보): 요청을 받았으며 프로세스를 계속 처리 중임을 알려줌.
    - 실제로는 잘 쓰이지 않는다.

  • 2xx (성공): 요청을 성공적으로 처리했음을 알려줌.
    - 주요 코드

    • 200 OK - 요청 성공
    • 201 Created - 요청 성공하여 새로운 리소스가 생성됨
    • 202 Accepted - 요청을 수신했지만 아직 처리가 완료되지는 않음
  • 3xx (리다이렉션): 완료를 위해 클라이언트에서 추가적인 작업 조치가 필요한 상황.
    - 주요 코드
    : URL 변경 등으로 인해 바뀐 리소스에 대한 주소를 담은 Location 헤더를 아래 상태 코드와 함께 전송.

    • 301, 308 Moved Permanently - 특정 리소스의 URI가 영구적으로 이동
    • 307 Temporary Redirect - 일시적인 변경
  • 4xx (클라이언트 오류): 클라이언트에서 보낸 요청을 처리할 수 없음.
    - 주요 코드

    • 400 Bad Request - 잘못된 문법또는 잘못된 메세지로 인한 오류
    • 401 Unauthorized - 클라이언트에게 인증이 필요함
    • 404 Not Found - 요청한 리소스가 존재하지 않음
  • 5xx (서버 오류): 서버에게 문제가 있음.
    - 주요 코드

    • 500 Internal Server Error - 서버 내부에 문제가 있음
    • 502 Bad Gateway - 서버 간 유효하지 않은 응답을 받음

출처: [10분 테코톡] 코카콜라의 HTTP 메서드와 상태코드
https://www.youtube.com/watch?v=QcKEJFvPryI

profile
CS, 개발 공부기록 🌱

0개의 댓글