[ HTTP ] - HTTP 메서드

Hyeongil Jeon·2021년 6월 28일
0

HTTP

목록 보기
4/5

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의 수강 내용을 정리하기 위한 글입니다.

URI 설계 시 가장 중요한 것은 '리소스 식별'

  • 회원에 대한 설계를 할 때, (회원 목록, 회원 등록, 회원 수정, 회원 삭제 등) 각각의 행동이 아닌 회원 그 자체가 '리소스'!
  • URI 설계 시 회원이라는 리소스만 식별하도록 설계를 한다!

따라서, 좋은 URI는 리소스만 식별되고, 해당 리소스에 대한 행동(등록, 삭제, 수정, 목록 등)을 따로 분리시켜야 한다. 이때 행동에 대한 구분을 도와주는 것이 HTTP 메서드이다.

HTTP 메서드 종류

  • GET : 리소스 조회
  • POST : 요청 데이터 처리
  • PUT : 리소스를 대체 → 파일의 덮어쓰기를 생각하라!
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

GET

GET /search?q=hello&hl=ko HTTP/1.1
Host: www.google.com

  • 리소스 조회
  • 서버에 전달할 데이터를 query를 통해서 전달
  • 메시지 body 사용 가능하지만 지원하는 곳이 많이 없음..

POST

POST /members HTTP/1.1
Content-Type: application/json

{
"username": "hello",
"age": 20
}

  • 요청 데이터 처리
  • 메시지 body를 통해 데이터를 처리
  • 주로 전달받은 데이터로 신규 리소스 등록, 프로세스 처리 등에 사용
  • 리소스 URI에 POST 요청이 오게되면 정해진 처리방법이 없기 때문에 리소스마다 어떻게 처리할지 정의해야 함

PUT

PUT /member/100 HTTP/1.1
Content-Type: application/json

{
"username": "hello",
"age": 20
}

  • 리소스를 대체 ( 파일 덮어쓰기 ! )

  • POST와의 차이점

    클라이언트가 리소스의 위치를 알고 URI를 지정한다!

    POST의 경우 서버에서 리소스의 위치 할당

  • PUT은 리소스를 완전히 대체하기 때문에 주의가 필요하다.

    (Ex userID와 userPw가 있을때 PUT 메서드로 userID를 덮어쓸 경우 userPw는 PUT에 정의되지 않았기 때문에 삭제된다)

PATCH

PATCH /members/100 HTTP/1.1
Conetent-Type: application/json

{
"age": 50
}

  • 리소스 부분 변경
  • 위 PUT의 덮어쓰기를 보완

DELETE

DELETE /members/100 HTTP/1.1
Host: localhost:8080

  • 리소스 제거

HTTP 메서드의 속성

1. 안전 ( Safe )

  • 호출해도 리소스를 변경하지 않는다.

2. 멱등 ( Idempotent )

  • f(f(x)) = f(x)
  • 한번 호출하던 백만번을 호출하던 결과는 같다
  • 멱등 메서드
    • GET
    • PUT
    • DELETE
    • POST : 멱등이 아님! 두번 호출하면 같은 처리가 중복해서 발생 가능

3. 캐시가능 ( Cacheable )

  • 응답 결과 리소스를 캐시해서 사용여부
  • GET, POST, PATCH 캐시가능 ( 사실상 POST, PATCH는 캐시로 구현이 쉽지 않음 )
profile
어제보다 성장한 오늘

0개의 댓글