ddingurri
유원준의 개발로그
ddingurri
전체 방문자
오늘
어제
  • 전체글 (37)
    • PS (7)
      • BOJ (5)
      • Programmers (0)
      • 후기 (2)
    • CS (22)
      • Data Structure (0)
      • Java (6)
      • OOP (2)
      • Spring (7)
      • WEB (3)
      • Database (4)
    • Develop (2)
    • Books (2)
    • Daily (4)
      • moments (0)
      • 회고 (4)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 객체지향의 사실과 오해 후기
    • Spring
    • 객체지향의 사실과 오해 요약
    • 23288 파이썬
    • MySQL
    • 객체지향의 사실과 오해 2장
    • 객사오 2장
    • 주사위굴리기2 파이썬
    • 21609 파이썬
    • 상어 중학교 python3
    • 책 스터디
    • 백준 주사위 굴리기2 파이썬
    • 스프링
    • 주사위 굴리기2 파이썬
    • 삼성 문제집 파이썬
    • mysql float
    • 객체지향의 사실과 오해 리뷰
    • 백준 주사위 굴리기2
    • 상어 중학교 python
    • 상어 중학교
    • SWEA
    • 백준
    • 주사위 굴리기2
    • 객체지향의 사실과 오해 1장
    • 상어 초등학교
    • Java
    • float 소수점
    • mysql 소수점
    • 객체지향의 사실과 오해
    • 주사위굴리기2

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    ddingurri

    유원준의 개발로그

    [WEB] HTTP Method란?
    CS/WEB

    [WEB] HTTP Method란?

    2023. 4. 13. 00:46

    HTTP Method에 대해

    HTTP Method란? 클라이언트 - 서버 구조에서 요청(request)와 응답(response)가 이루어지는 방식을 의미합니다.

    서버가 수행해야 할 동작을 지정하여 요청(request)을 보내는 방법이라고 정리할 수 있겠네요.

     

    HTTP 메서드는 왜 사용할까요? 

    결국 리소스와 동작를 분리하기 위함입니다.

    HTTP METHOD를 통해 서버가 수행해야 할 동작을 지정하면, URI는 리소스만 식별하면 되기 때문이죠.

     

    HTTP Method의 종류

    HTTP Method는 크게 8가지가 있으며, 다음과 같습니다.

     

    • GET : 리소스를 조회
    • POST : 데이터 추가, 등록
    • PUT : 리소스 대체, 수정 / 해당 리소스가 없으면 새롭게 생성
    • DELETE : 리소스 삭제
    • PATCH : 리소스 부분 변경(수정) 
    • HEAD : GET과 동일하나, HTTP 메세지의 body 부분을 제외하고 조회
    • OPTIONS : 서버와 브라우저가 통신하기 위한 통신 옵션을 확인하기 위함
      • 서버가 어떤 method, header, content-type을 제공하는지 알 수 있습니다.
    • CONNECT : 대상 자원으로 식별되는 서버에 대한 연결 요청

     

    이 중 주로 사용하는 메서드는 5가지입니다. (GET, POST, PUT, DELETE) + PATCH

     

    위 5가지 메서드를 좀 더 자세히 들여다볼까요?

     

    GET 메서드

    • 리소스를 조회하는 메서드입니다.
      • 예를 들어 서버에게 클라이언트가 "이 페이지 보여줘" 라고 요청하는 경우가 있겠네요.
      • URL 입력이나, 링크를 클릭하는 경우도 GET 요청에 해당합니다.
    • GET 요청은 멱등성 이라는 개념을 지니고 있어, 여러 번 조회 요청을 하여도 리소스는 변하지 않습니다.
    • GET 요청에서 서버에 데이터를 전달하는 경우, 쿼리스트링을 통해서 전달합니다.
    • 초록창에 "미세먼지" 라고 검색을 하니, URL의 맨 마지막에 query=미세먼지 라는 부분을 확인할 수 있습니다.

    query = 미세먼지

    • 하지만, 해당 쿼리스트링은 클라이언트에게 전달하는 데이터 정보가 무방비 상태로 노출되므로, 이를 유의해야 합니다. (브라우저 히스토리에도 기록이 남습니다.)

     

    POST 메서드

    • 주로 새로운 리소스를 생성(Create)하는데 사용합니다.
    • 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환합니다.
    • 데이터를 메세지 바디에 쿼리 파라미터 형식으로 전달합니다.
      • 쿼리 파라미터는 key - value 형식으로 되어 있습니다.
      • 이는 GET 방식과 비교하면, 데이터가 외부로 노출되지 않으므로, 보안상의 이점이 있습니다.

    • POST로 조회가 가능하긴 하나, 해당 메서드는 멱등성을 지니지 않으므로, POST 메서드를 여러 번 수행할 경우 같은 결과값이 나오는 것을 보장하지 않습니다. 추가적으로, GET 메서드는 캐싱을 이용하므로, 조회 속도 또한 POST 메서드에 비해서 우수합니다.
    • 데이터를 전송할 때, Body에 담아 전송하므로, 메세지 길이의 제한이 없습니다.
    • 문자열 데이터 뿐만 아니라, RadioButton같은 객체들의 값도 전송할 수 있습니다.

     

    PUT 메서드

    • 리소스를 완전히 대체하는 개념(덮어쓰기)
    • 클라이언트가 리소스를 식별할 수 있습니다.
      • 클라이언트가 구체적인 리소스 위치를 아는 상태에서, URI를 지정합니다.
      • PUT /posts/1: 1번 게시글 수정 요청
    • 이는 부분 수정이 불가능합니다. 만약 기존에 A, B 라는 데이터가 존재했는데, C라는 데이터를 담아 PUT 요청을 보낸다면, A, B 모두 삭제되고 C로 대체되는 개념입니다.
    • 멱등성을 지닙니다.

     

    PATCH 메서드

    • PUT과 같이 리소스를 수정하는 역할을 하지만, 리소스를 부분 변경한다는 점에서 차이가 있습니다.
    • 기존 데이터 A, B 가 존재할 때, B = C 로 대체 후 PATCH 요청을 하면 데이터가 A, C로 변경됩니다. 
    • PATCH 메서드를 지원하지 않는 서버도 있는데, 그럴 경우 POST를 사용합니다.
    • 멱등성을 지니지 않습니다. 

     

    DELETE 메서드

    • 리소스를 제거하는 역할입니다.
    • 멱등성을 지닙니다.

     

    출처

    • https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/PATCH
    • https://prinha.tistory.com/entry/HTMLWEB-HTTP-Method-GET-POST%EC%9D%98-%EC%B0%A8%EC%9D%B4
    저작자표시 (새창열림)

    'CS > WEB' 카테고리의 다른 글

    [WEB] REST API - URI 설계 규칙  (2) 2023.04.15
    [Web] REST API란?  (0) 2023.04.15
      'CS/WEB' 카테고리의 다른 글
      • [WEB] REST API - URI 설계 규칙
      • [Web] REST API란?
      ddingurri
      ddingurri

      티스토리툴바