기술 정리 & CS/Web 일반

[Web 기본] HTTP 메소드 (+ PRG 패턴)

yubi5050 2022. 8. 26. 05:13

HTTP 메소드 종류

📁 GET

  • 서버로부터 데이터를 요청(GET)하는 메소드
  • GET은 요청을 전송시 필요 데이터를 Body 대신, 쿼리스트링을 통해 전송함

 

📁 POST

  • 데이터를 생성(등록)하는 요청에 주로 사용되는 메소드

 

📁 PUT

  • 데이터 리소스를 대체, 해당 리소스 없으면 생성. 쉽게 말해 데이터를 덮어씀

 

📁 PATCH

  • PUT 과 유사하게 리소스 수정시 사용.
  • 다른점은 PATCH는 데이터 리소스 일부분만 변경 가능

 

📁 DELETE

  • 삭제 요청을 보낼 때 사용되는 메소드

 

📁 기타 메소드 4가지

  • HEAD: GET과 유사, 메시지 부분을 제외하고 상태 줄과 헤더만 반환
  • OPTIONS: 대상 리소스에 대한 통신 가능 옵션 설명 (주로 CORS에서 사용)
  • CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정
  • TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행

 

HTTP 메소드 주요 속성

HTTP 메소드의 속성에는 안전(Safe Methods), 멱등(Idempotent Methods), 캐시가능(Cacheable Methods)가 있다.

다음 단어가 무엇을 의미하는지 살펴보도록 하자.

 

📁 안전(Safe Methods)

  • 계속해서 메소드를 호출해도 리소스를 변경하지 않는다는 뜻
  • GET 메소드가 안전 O

 

📁 멱등(Idempotent Methods)

  • 메소드를 계속 호출해도 결과가 똑같다는 뜻
  • GET, PUT, DELETE는 멱등, POST나 PATCH는 멱등 X

 

📁 캐시가능(Cacheable Methods)

  • 캐싱을 해서 데이터를 효율적으로 가져올 수 있다는 뜻
  • GET, HEAD, POST, PATCH가 캐시가 가능
  • 실제로는 GET과 HEAD만 주로 캐싱이 쓰임

 

 

HTTP 메소드 PRG Pattern

PRG 패턴이란 Post -> Redirect -> GET으로 이어지는 하나의 권장되는 패턴 중 하나이다.

 

만약 PRG 패턴을 적용하지 않으면 예로 특정 상품을 구매한다고 할 때 새로고침을 하게 되면 마지막 요청인 POST 주문입력 요청이 재수행 되어 중복 구매가 될 수 있다.

그렇기 때문에 POST가 완료되면 인위적으로 Redirect로 GET 요청을 하게되고, 새로고침을 하더라도 마지막 요청이 GET 요청이기 때문에 정상적으로 수행된다.

 

이미지 출처 : https://juinor.tistory.com/m/32

 

20. Post는 무조건 => redirect()  : prg 패턴 => 두개 등록돌 수도 있음.  / PRG 패턴