본문 바로가기

CS지식/개발 상식

[CS지식 - 개발상식] HTTP 메소드

 

1. HTTP 메소드

  • HTTP는 요청 메서드를 정의하여, 주어진 리소스에 수행하길 원하는 행동을 나타냄
  • 각각의 메서드는 서로 다른 의미를 구현하지만, 일부 기능은 메서드 집합간에 서로 공유하기도 함

1-1. REST(Representational State Transfer)

  • REST의 탄생
    2000년도에 로이 필딩(Roy Fielding)의 박사학위 논문에서 최초로 소개됨
    로이 필딩은 그 당시 웹(HTTP)설꼐의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며 웹의 장점을 최대한 활용할 수 있는 아키텍처로써 REST를 발표함
  • 지원(Resource) : URI
  • 행위(Verb) : HTTP Method
  • 표현(Representations)

▶HTTP Method : REST를 지키면서 행위를 전달하는 방법

2. HTTP 메소드 종류

  1. GET(조회) : 서버로부터 데이터를 취득
  2. POST(등록) : 서버에 데이터를 추가, 작성
  3. PUT(수정) : 서버의 데이터를 갱신, 작성
  4. PATCH : 리소스의 일부분을 수정
  5. DELETE(삭제) : 서버의 데이터를 삭제
  6. HEAD : 서버의 리소스의 헤더(메타 데이터의 취득)
  7. OPTIONS : 리소스가 지원하고 있는 메소드의 취득
  8. CONNECT : 프록시 동작의 터널 접속을 변경

**멱등성(Idempotence) : 여러번 수행해도 결과가 같음을 의미 ▶ 호출로 인하여 데이터가 변형되지 않는다는 것을 의미

2-1. GET

  • 리소스 조회에 사용(읽기Read, 검색Retrieve)
  • 서버에 전달하고 싶은 데이터를 query(parameter, query string)을 통해 전달
    ▶ 메시지 바디를 통해 데이터를 전달 할 수도 있지만 지원하지 않는 곳도 존재하기 때문에 권장x
  • GET의 성공적 요청 : XML이나 JSON과 함꼐 200(ok) HTTP응답 코드를 리턴
  • 에러 발생 시 : 404(Not found)에러나 400(Bad request)에러 발생
  • 조회할 데이터에 대한 정보는 URL을 통해 파라미터를 받음
  • GET는 캐싱이 가능하여 같은 데이터를 한번 더 조회 할 경우에 저장한 값을 사용하여 조회 속도가 빨라짐

1. HTTP명세에 의하면 GET요청은 데이터를 읽을떄만 사용되고 수정할때는 사용하지 않음
2. GET요청은 idempotent함

3. 데이터를 변경하는 연산에 사용하면 안됨

 

2-2. POST

  • 새로운 리소스를 생성(Create)
    ▶ POST는 하위리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용
  • 메시지 바디를 통해 서버로 요청 데이터를 전달
  • POST의 성공적 요청 : 201(Created) HTTP응답 반환
  • URL을 통해 데이터를 받지 않고, Body값을 통해 데이터를 받음
    ▶ 데이터 조회에 성공한다면 Body값에 저장한 데이터 값을 저장하여 성공 응답을 보냄

1. POST요청은 idempotent하지 않음

2. 두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 resource를 반환 할 가능성이 높음

 

2-3. PUT

  • resource를 생성, 업데이트하기 위해 서버로 데이터를 보낼때 사용
  • POST와 PUT은 어떻게 구분하여 사용?
    ▶ PUT은 클라이언트가 리소스의 위치를 알고 URI를 지정해 주어야함
    ▶ PUT : 사용자가 데이터를 지정하고 수정하는것이기때문에 데이터가 계속 생성되지 않음
    ▶ POST : 새로운 데이터를 개속 생성하기 떄문에 요청시마다 데이터를 생성
  • URL를 통해 어떤 데이터를 수정할지 파라미터르 받음 ▶ 수정할 데이터 값을 Body값을 통해 받음

1. PUT요청은 idempotent함

 

2-4. PATCH

  • resource를 부분적으로 변경
  • 지원하지 않은 경우도 있어 이런 경우 POST로 대체하여 사용
  • PATCH와 PUT의 차이
    ▶PATCH : 리소스의 일부 업데이트, idempotent하다고 볼 수 없음
    ▶PUT : 리소스의 모든 것을 업데이트, idempotent함

2-5. DELETE

  • 지정된 resource 삭제
  • URL을 통해 파라미터를 받음

 

3. HTTP 메소드 속성

 

더보기