[네트워크] HTTP 메서드

Shelby Choi·2023년 8월 9일

CS

목록 보기
3/5

모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 | 섹션 4

📌 HTTP API를 만들어보자

  • 회원 정보 관리 API 설계
    • 회원 목록 조회
    • 회원 조회
    • 회원 등록
    • 회원 수정
    • 회원 삭제
  • 좋은 URI 설계란?
    • 리소스와 행위를 구별하자 ex) 회원 조회 -> 리소스: 회원, 행위(메서드): 조회
    • 계층적으로 구조를 활용하자 ex) /members, /members/{...}

📌 HTTP 메서드

GET: 리소스 조회
POST: 요청 데이터 처리, 등록
PUT: 리소스를 대체, 없으면 새로 생성
PATCH: 리소스 부분 변경
DELETE: 리소스
그외: HEAD, OPTIONS, CONNECT, TRACE

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터가 있을 경우 query string을 통해 전달
  • 바디는 거의 사용하지 않음

POST

  • 요청 데이터 처리
  • 메시지 바디를 통해 서버로 요청 데이터 전달
  • 주로 신규 리소스 등록 등에 사용
  • 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야하는 경우 사용
    • HTML Form 입력 사항 처리
    • 게시판 글쓰기, 댓글 달기
    • 서버가 아직 식별하지 않은 새 리소스 생성
    • 기존 자원에 데이터 추가
  • 컨트롤 URI POST의 결과로 새로운 리소스가 생성되지 않을 때 ex) /orders/{orderId}/start-delivery
  • 애매하면 무조건 POST

PUT

  • 리소스 대체, 없으면 생성(덮어쓰기)

  • POST와의 차이점: 클라이언트가 리소스를 식별해서 보낸다 ex) /members/100

  • 리소스를 완전히 대체한다는 것에 주의

    // /members/100
    {
      "username": "young",
      "age": 20
    }
    
    // 클라이언트에서 username 필드없이 보낼 경우 완전히 덮어써짐
    {
      "age": 50
    }
    • 즉, PUT은 수정이 아니다

PATCH

  • 리소스를 수정하고 싶을 때
  • 만약 PATCH를 지원하지 않는 서버라면? POST 사용하기

DELETE

  • 리소스를 삭제하고 싶을 때

📌 HTTP 메서드의 속성

안전(Safe)

  • 호출해도 리소스를 변경하지 않는다
    • 안전: GET
    • 안전하지 않는 메소드: POST, PUT, DELETE
  • 다수의 요청으로 인해 로그가 쌓이는 것까지는 고려하지 않는다.

멱등(Idempotent)

  • 같은 리소스로 한번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같은 것.
    • 멱등 메소드: GET, PUT, DELETE
    • 멱등이 아닌 메소드: POST ex) 결제가 다수 발생
  • 똑같은 요청을 두번해도 괜찮기 때문에, 멱등한 메소드는 자동 복구를 위한 재요청에 사용된다.
  • 리소스가 변경되는 것까지는 고려하지 않는다.

캐시가능(Cacheable)

  • 응답 결과 리소스를 캐시해서 사용해도 되는가? eX) 용량 큰 사진일 경우 캐시에 저장
    • GET, HEAD, POST, PATCH 캐시 가능
  • 거의 GET만 캐시로 사용한다고 보면 됨
profile
React를 애정하는 FE 개발자

1개의 댓글

comment-user-thumbnail
2023년 8월 9일

좋은 글 감사합니다. 자주 방문할게요 :)

답글 달기