HTTP POST,GET,PATCH,PUT,DELETE

kkkey·2024년 1월 6일
0

이 다섯개의 메소드는 http메서드로, 적절한 목적에 따라 사용될 수 있도록 분리되어있는 것이다.

이 각각의 특징과 주요 차이점에 관해 알아보자.

  1. GET → 리소스 조회 (일반적으로 no body)
    • 리소스 조회를 위해 사용된다. 만약 서버쪽으로 전달하고싶은 내용이 있다면 body 가 아닌 querey parameter 로 전달한다.(?a=b&c=d)
    • 서버는 타겟 리소스에 해당하는 response data를 넘겨준다.
    • get메서드는 여러번 해도 db에 변함이 없다 —> 멱등성이 보장된다 (Idempotent)
  2. POST → 요청 처리, 주로 생성
    • get 메서드와 다르게 body 가 존재한다. 따라서 데이터를 서버사이드로 보내기 용이하다.
    • post 메서드는 같은 메서드를 여러번 실행하면 계속 데이터가 추가되므로 멱등성이 보장되지 않는다.
  3. PATCH → 일부 수정
    • “부분” 이라는점이 가장 중요하다. 만약 “name”, “age”, “school” 칼럼이 있을때 “age” 만 있는 부분이 전달되면, age 만 바뀐 데이터가 유지되어야한다.
    • 멱등이 보장되지 않는다. → 예를 들어보자. 이전과 같은 데이터가 있다고 할때 “operation”:”add”, “age”:”10” 이라는 리퀘스트가 넘어간다고 해보자, 이때 이 리퀘스트가 넘어갈때 마다 나이를 10 씩 더해주게 설계를 한다고 해도 Patch 의 부분수정 개념과 일치하므로 사용할수있다 —> 여러번 실행하면 실행할때마다 데이터 수정이 일어날 수도 있으므로 멱등 x
  4. PUT → 대치, 만약 대치할게 없으면 새로 생성
    • “전체" 대치이다. 그리고 만약 이 내용에 해당하는 내용이 없다면 새로 만들어준다. 이렇게만 보면 post 와 비슷해 멱등이 보장되지 않을것 같지만 보장된다. —>post+delete 라고 생각하면 편하다. 새롭게 만들어주지만 이전걸 계속 삭제한다.
    • 예를 들어보자. 만약 “name”, “age”, “school” 칼럼이 있을때 “age” 만 있는 부분이 전달되면, 이전에 있던 “name”, “school” 부분은 사라진, 넘어온 그대로 “age” 만 있는 데이터로 대체되게 된다.
    • 이걸 100번 실행한다 하자. 매번 이전 데이터는 삭제되고 새로운 동일한 명령어로 대체될것이다. 이는 얼마나 실행하던 항상 동일한 결과를 가져올것이고 멱등이 보장된다.
  5. DELETE → 삭제 (일반적으로 no body)
    • 서버에게 리소스 삭제를 요청한다.
    • 일반적으로 get 과 유사한 방식으로 사용한다 (get → 알고싶어!, delete → 지우고싶어!)
    • 멱등성이 보장된다. → 여러번 재시도해도 이미 지워진 리소스가 더 지워지진 않는다.
profile
주니어 백엔드 개발자입니당

0개의 댓글