ToBe끝판왕

[ 개념 정리 ] HTTP 기본 ( HTTP 메서드 - GET / POST / PUT / DELETE / PATCH ) (3) 본문

■ Programming Skills/개념 정리

[ 개념 정리 ] HTTP 기본 ( HTTP 메서드 - GET / POST / PUT / DELETE / PATCH ) (3)

업그레이드중 2025. 1. 9. 18:43
반응형



 


 

💡  웹 개발자라면 알아야할 HTTP 관련 지식을 파헤쳐 보자 !

 

 

✅  HTTP 메서드 란 ?

 

※  URI의 설계

 

-  리소스(Resource) 를 식별할 수 있도록 설계

 

ex) 회원 조회 / 등록 / 수정 / 삭제 의 경우

•   /members 로 시작하게 URI를 만든다.

•  이 때, 리소스는 회원이기 때문

 

👉  즉, URI는 리소스만 식별 !

 

❓  그렇다면 리소스에 대한 행위는 어떻게 표현할까 ?

 

▶️  리소스에 대한 행위 ( 조회 , 등록 , 수정 , 삭제 ) 를 표현하는 것이 바로 HTTP 메서드 이다.  

 

 

 

-  HTTP 메서드 정의

•  클라이언트가 서버의 리소스( Resource ) 에 대해 어떤 작업을 수행할지 알려주는 역할 ( = 행위를 표현한다. )

 

 

-  HTTP 메서드 종류

HTTP 메서드 종류 사용 용도 데이터 포함 위치 특징
GET 리소스 조회 query( 쿼리 파라미터 ,
쿼리 스트링 ) 을 통해 전달
메시지 바디를 통해
전달하는것은 권장 X
POST 요청 데이터 처리
( 신규 리소스 등록 , 
프로세스 처리 등 )
HTTP 요청 메시지 Body •  요청 데이터를 처리하는 경우
•  다른 메서드로 처리하기
    애매한 경우

PUT 리소스 대체 HTTP 요청 메시지 Body 클라이언트가 리소스 위치를 알고
URI 지정
PATCH 리소스 부분 변경 HTTP 요청 메시지 Body  
DELETE 리소스 제거 URL  

 

 

 

-  HTTP 메서드 속성

•  안전 ( Safe )  :  호출해도 리소스가 변경되지 않는다.

•  멱등 ( Idempotent )  :  한 번 호출하든 100번 호출하든 결과가 똑같다. 하지만 POST 메서드의 경우 멱등 X

•  캐시가능 ( Cashable )  :  실제로 GET , HEAD 정도만 캐시로 사용

 

※ 캐시 ( Cache ) 란 무엇인가 ?

•  자주 사용되는 데이터를 미리 저장해두었다가, 다시 요청이 들어왔을 때 빠르게 제공하는 임시 저장 공간

•  웹브라우저나 CDN ( Content Delivery Network ) 에 자주 요청되는 웹페이지 , 이미지 , CSS , javaScript

    등을 저장해두고, 다음 요청 시 서버에 요청하지 않고 바로 응답해준다.

•  서버 부하 감소 , 빠른 응답 속도 , 네트워크 트래픽 효과 감소 등의 기대효과를 볼 수 있다.

 

 


 

 

✅  HTTP 메서드의 활용

 

 

-  클라이언트에서 서버로 데이터 전송

•  쿼리 파라미터  :  GET 메서드 , 주로 정렬 필터 ( 검색어 )

•  요청 메시지 Body  :  POST , PUT , PATCH 메서드 , 주로 회원가입 , 상품주문 , 리소스 등록 , 리소스 변경

 

 

 

-  정적 데이터 조회

•  이미지 , 정적 텍스트 문서

•  조회 이므로 GET 메서드 사용

•  일반적으로 쿼리 파라미터 없이 리소스(Resource) 경로로 단순하게 조회

 

 

 

 

-  동적 데이터 조회

•  주로 검색 , 게시판 목록에서 정렬 필터 ( 검색어 )

•  조회 조건을 줄여주는 필터 , 조회 결과를 정렬하는 정렬 조건에 주로 사용

•  조회이므로 GET 메서드 사용

•  쿼리 파라미터를 사용해서 데이터 전달

ex) ?q=hello&hl=ko

 

 

 

-  HTML Form 데이터 전송

•  HTML Form submit 의 경우 POST 메서드 전송

•  POST 전송  :  Content-Type 을 application/x-www-form-urlencoded사용

•  POST 전송  :  form의 내용을 HTTP 요청 메시지 Body에 담아 전송 ( Key-Value, 쿼리 파라미터 )

 

•  HTML Form 은 GET 전송도 가능하다.

 

•  Content-Type = multipart/form-data  :  파일 업로드 같은 바이너리 데이터 전송시 사용

                                                       ( 다른 종류의 여러 파일과 폼의 내용 함께 전송 )

 

 

👉  HTML Form 전송은 GET , POST 메서드만 지원 !!

 

 

 

 

 

 

 

 


 

 

 

✅  HTTP API 설계 예시

 

 

-  HTTP API - 컬렉션

•  POST 메서드 기반 등록

ex ) 회원 관리 API 제공

 

-  HTTP API - 스토어

•  PUT 메서드 기반 등록

ex ) 정적 컨텐츠 관리 , 원격 파일 관리

 

-  HTTP Form 사용

•  웹 페이지 회원 관리

•  GET , POST 메서드만 가능

 


 

-  POST ( 신규 리소스 등록 특징 )

•  클라이언트는 등록될 리소스의 URI 를 모른다.

ex) 회원등록  :  /members ( POST 메서드 )

 

•  서버가 새로 등록될 리소스 URI를 생성한다.

ex) HTTP/1.1 201 Created Location: /members/100

 

•  컬렉션 ( Collection )

:  서버가 관리하는 리소스 디렉터리

:  서버가 리소스의 URI를 생성하고 관리

ex)  /members

 

 

 

-  PUT ( 파일 관리 시스템 )

•  클라이언트가 리소스 URI를 알고 있어야 한다.

ex) 파일 등록  :  /files/{filename} ( PUTT 메서드 )

 

•  클라이언트가 직접 리소스의 URI를 지정

 

•  PUT 메서드의 경우, 있으면 대체(덮어쓰기) 하고 없는 경우 생성한다.

:  파일 등록의 경우 POST 메서드보단 PUT 메서드가 더 알맞다

 

•  스토어 ( Store )

:  클라이언트가 관리하는 리소스 저장소

:  클라이언트가 리소스의 URI를 알고 관리

ex)  /files

 

 

-  HTML Form 사용

•  HTML Form 은 GET , POST 메서드만 지원

•  Ajax 같은 기술을 사용해서 해결 가능

 

•  컨트롤 URI

:  GET , POST 메서드만 지원하므로 제약이 있음

:  이런 제약을 해결하기 위해 동사로 된 리소스 경로 사용

:  POST의 /new , /edit , /delete 가 컨트롤 URI

:  HTTP 메서드로 해결하기 애매한 경우 사용 ( HTTP API 포함 )

ex) /members/{id]/delete

 

 

👉  좋은 URI를 설계하기 위해선 위에 주어진 개념들을 참고 !!

 

 

 

 

 

 

※ 해당 내용은 인프런 김영한 강사님의  "모든 개발자를 위한 HTTP 웹 기본지식 " 인강을 참고하였습니다

반응형
Comments