HTTP 메서드

무삭이의 개발일지·2023년 5월 1일
0

http알아보자

목록 보기
4/5

HTTP API

우리가 API를 개발할 때 가장 중요한 것은 리소스 식별 이다.
그렇다면 리소스의 의미는 무엇?

  • 회원을 등록하고 수정하고 조회하는 것이 아니라 회원이라는 개념 자체가 리소스

그러면 어떻게 식별하는 게 좋아?

  • 회원을 등록하고 수정하고 조회하는 것을 모두 배제
  • 회원이라는 리소스만 식별하면 된다. -> 회원 리소스를 URI에 매핑

API URI 설계할 때 리소스 식별, URI 계층 구조를 활용하자

리소스와 행위를 분리하라?

  • URI는 리소스만 식별

    • 리소스 : 회원
    • 행위 : 조회, 등록, 삭제, 변경
  • 리소스는 명사, 행위는 동사

HTTP 메서드 종류

  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용
  • PUT : 리소스를 대체, 해당 리소스가 없으면 생성
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제

GET

  • 리소스 조회
  • 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)를 통해서 전달

POST

  • 요청 데이터 처리
    -메시지 바디를 통해 클라이언트가 서버로 요청 데이터 전달
  • 서버는 요청 데이터를 처리

새 리소스 생성(등록)

  • 서버가 아직 식별하지 않은 새 리소스 생성

요청 데이터 처리

  • 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리 해야 하는 경우

다른 메서드로 처리하기 애매한 경우

  • 애매하면 POST를 사용하자ㅋ

PUT

  • 리소스를 대체

    • 리소스가 있으면 대체
    • 없으면 생성
  • 클라이언트가 리소스를 식별

    • 클라이언트가 리소스 위치를 알고 URI 지정
    • 이것이 POST와 차이점

있는 경우 리소스를 대체. 리소스를 완전히 대체해버린다.

없으면 생성한다.

🎯 PUT은 수정이 아니라 완전히 갈아치우는 것.

리소스 부분 변경은 PATCH를 사용한다.

PATCH

  • 리소스 부분 변경

DELETE

  • 리소스 제거

HTTP 메서드 속성에 대해 알아보자!!

  • 안전(Safe Methods)
  • 멱등(IDempotent Methods)
  • 캐시가능(Cacheable Methods)

안전

안전이란? 호출해도 리소스를 변경하지 않는다. Get은 안전하다. 왜? 조회만 하는거라서.

멱등

멱등은 한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같아야한다.
멱등 메서드로는 GET, PUT, DELETE가 있다.
GET : 한 번 조회하든, 두 번 조회하든 같은 결과가 조회된다.
PUT : 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.
DELETE : 결과를 삭제한다. 같은 요청을 여러 번 해도 삭제된 결과는 똑같다.
⚔️ POST : 멱등이 아니다!!! 두 번 호출하면 같은 결제가 중복해서 발생할 수 있다.

🎯 요청을 하다가 중간에 PUT으로 인해 리소스가 변경이 되면 이 PUT에 의해 리소스가 변경 돼서 GET를 할 경우 변경된 리소스를 반환할 것이다. 이럴 때도 멱등하다고 볼 수 있을까? 멱등은 외부 요인으로 중간에 리소스가 변경되는 것까지는 고려하지 않는다!!!

캐시가능

응답 결과를 캐시에서 사용할 수 있는가?
: 웹브라우저에 이미지를 요청 했을 때 이렇게 한 번 요청을 했다면 또 같은 이미지를 요청할 필요가 없다. 이 때 내 웹브라우저 PC 내부에 이미지를 저장하고 있다. 이걸 캐시라고 한다. 물론 여러 가지가 있다. 즉, 웹브라우저가 내부에 이 이미지를 저장하고 있을 수 있냐 없냐... GET, HEAD, POST, PATCH 캐시 가능하다.
하지만 실제로는 GET, HEAD 정도만 캐시로 사용한다.

profile
No. Try not. Do or Do not. There is no try.

0개의 댓글