kkkkkkkkkkkk
kkkkk
kkkkkkkkkkkk
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS & OS
    • Algorithms
    • Laguage
    • Book
      • 객체지향의 사실과 오해
      • Effective Java
      • Spring boot 와 AWS로 혼자 구현하는 ..
      • 도메인 주도 계발 시작하기
    • DB
    • Spring
    • Spring Boot
    • JPA
    • Git
    • Clean Code
    • HTTP

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 객체지향 프로그래밍
  • 설계 원칙
  • 응집도
  • 결합도
  • 역할
  • 책임

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
kkkkkkkkkkkk

kkkkk

HTTP

[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드

2022. 10. 24. 22:25

API URI 설계 시 포인트

  • 가장 중요한 것은 리소스 식별이다.

 

리소스란?

  • 동작을 제외한 자원 그 자체를 리소라 한다.
  • 행동은 제외가 되며 예를 들어 삭제, 추가, 수정 등 이러한 행위들은 제외다.
  • 기본적으로 조회 URI를 보면 GET /members/{id} 로 구성한다

계층 구조상 상위 자원을 컬렉션으로 보기에 복수형으로 사용하는 게 좋다.

 

HTTP 메서드

  • GET
    • 서버에 전달되는 데이터는 query string 을 통해 전달된다.
      • ex) hello=hi&hello=hi
    • 메시지 바디는 사용이 가능하지만 지원되지 않는 곳이 많아 권장하지 않는다.
  • POST
    • 메시지 바디를 통해 서버로 요청 데이터를 전달하면 서버는 해당 데이터를 받아 처리한다.
    • 주로 등록 혹은 프로세스 처리 등에 사용된다.
      • 리소스 등록
        • 서버가 아직 식별하지 않은 새로운 리소스를 생성한다.
      • 요청 데이터 처리
        • 단순한 데이터 생성 말고 프로세스를 처리하는 경우로 꼭 새로운 리소스가 생성되지 않을 수도 있다.
        • ex) POST /order/{orderId}/start-delivery
          • 리소스 단위가 아닌 행위가 포함된 URI 를 Control URI 라고 한다.
    • 다른 메서드로 해결하지 못하는 경우 POST를 사용하고는 한다.
  • PUT
    • 리소스 대체의 목적으로 리소스가 있는 경우 대치 값으로 변경하고 없는 경우 새롭게 생성한다.
    • 특정 리소스를 식별하기에 POST 와는 차이점이 있다.
  • PATCH
    • 리소스 부분을 변경
    • 대치가 아닌 필요 부분만 업데이트 하는 방식이다.
  • DELETE
    • 리소스를 제거할 때 사용한다.
    • 리소스 식별자를 Delete 로 보낼 경우 해당 리소스를 삭제한다.

 

안전(Safe Methods)

  • 호출을 해도 리소스는 변경되지 않는다.
  • GET 과 같이 조회의 성격을 띄고 있기에 안전하다.
  • 안전 범위는 리소스만 해당하며 외적인 요소는 고려하지 않는다.
    • 호출 할 때 마다 로그가 남는다고 이는 리소스에 대한 영향은 아니기에 고려하지 않아도 된다.

 

멱등(Idenpotent Methods)

  • 메서드를 반복해서 호출하더라도 결과가 동일 해야 한다.
  • GET, PUT, DELETE 와 같은 메서드는 여러번 호출해도 결과가 동일하다.
    • GET 은 조회를 하기에 리소스의 변경이 없고 결과가 동일하다.
    • PUT 은 대치값으로 변경하기에 결과가 동일하다.
    • DELETE 는 리소스를 삭제하기에 같은 요청을 여러번 하더라도 삭제 내용이 복구되지 않아 결과가 동일하다.

 

캐시가능(Cacheable Methods)

  • 실제로 GET, HEAD 정도만 캐시가 가능하다.
  • POST의 본문 내용까지 캐시 키로 고려해야 하는데 구현이 쉽지 않다.

 

 

 

 

참고 : https://catsbi.oopy.io/5218f90b-8d0d-4bd6-afa4-1b7736cf6f13

'HTTP' 카테고리의 다른 글

[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 상태코드  (0) 2022.11.16
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 활용  (0) 2022.11.15
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본  (0) 2022.10.24
[모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 - 모든 것이 HTTP, 클라이언트 서버 구조  (0) 2022.10.08
[모든 개발자를 위한 HTTP 웹 기본 지식]URI와 웹 브라우저 요청 흐름 - URI, 웹 브라우저의 요청 흐름  (0) 2022.10.05
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - PORT, DNS  (2) 2022.10.04
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - TCP, UDP  (0) 2022.10.03
[모든 개발자를 위한 HTTP 웹 기본 지식] 인터넷 네트워크 - 인터넷 통신, IP(인터넷 프로토콜)  (0) 2022.10.03
    'HTTP' 카테고리의 다른 글
    • [모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 상태코드
    • [모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 메서드 활용
    • [모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본
    • [모든 개발자를 위한 HTTP 웹 기본 지식] HTTP 기본 - 모든 것이 HTTP, 클라이언트 서버 구조
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바