포스트

04.HTTP 메서드

HTTP API 만들기

  • 리소스를 고려해서 만들어야 한다
  • 리소스란??
    • 회원가입, 회원조회, 회원수정 등등
    • 가입 조회 수정이 리소스가 아니다!! 회원 자체가 리소스이다
  • 즉, 리소스와 행위를 분리하여 URI를 만들어야 한다

HTTP 메서드 - GET, POST

  • 많이 사용되는 메서드
  • GET : 리소스 조회
  • POST : 요청 데이터 처리, 주로 등록에 사용한다
  • PUT : 리소스를 대체, 해당 리소스가 없으면 생성한다
  • PATCH : 리소스 부분 변경
  • DELETE : 리소스 삭제
  1. GET
    • 리소스 조회
    • query를 사용하여 서버에 데이터 전달
    • GET으로 서버에 전달되면 일반적으로 서버는 캐싱을 한다.
    • GET /search?query HTTPversion
  2. POST
    • 요청 데이터 처리
    • 메시지 바디를 통해 서버로 요청 데이터 전달
    • 서버는 요청 데이터를 받아서 처리한다
    • 1) 주로 신규 데이터 등록에 사용한다.
      • 서버가 아직 식별하지 않은 새로운 리소스를 생성한다.
      • 회원 가입, 물품 주문 등등
    • 2) 요청 데이터를 처리하는데도 사용한다.
      • 단순한 값 하나의 변경을 넘어서 프로세스의 상태가 변경되는 경우에 사용한다.
    • 3) 다른 메서드로 처리하기 어려운 경우
      • 조회 시 GET의 query로 데이터를 보내기가 어렵고, 메시지 바디를 이용해야 하는경우(보통 GET은 Body부분을 사용하지 않는다)
    • POST /리소스 HTTPversion

TTP 메서드 - PUT, PATCH, DELETE

  1. PUT
    • 기존에 리소스가 없으면 신규로 생성하고, 있으면 대체한다.
    • POST와의 큰 차이점
      • 첫째 클라이언트가 리소스를 식별한다
      • 클라이언트가 리소스의 위치를 알고 URI를 지정한다.
    • PUT /리소스/abcd HTTPversion
    • 주의할 점은 기존 리소스를 완전히 대체한다는 것이다.
    • 기존에 리소스의 데이터가 5개 있었는데 PUT을 이용하여 2개만 보내면 데이터가 2개로 변경된다.
  2. PATCH
    • 기존의 리소스에서 부분 변경을 하게 한다
    • PATCH /리소스/abcd HTTPversion
  3. DELETE
    • 리소스 제거
    • DELETE /리소스/abcd HTTPversion

TTP 메서드의 속성

  1. 안전
    • 호출해도 리소스를 변경하지 않는다
    • GET
  2. 멱등
    • 한 번 호출하든 100번 호출하든 모든 결과가 똑같다
    • GET : 조회는 여러번 해도 결과가 바뀌지 않는다
    • PUT : 같은 데이터를 계속해서 요청하면 결국 같은 값이 대체되므로 결과가 같다
    • DELETE : 어차피 한 번 삭제되면 계속 삭제된 상태기 때문에 여러번 해도 결과가 같다
    • POST는 멱등 X, 주문을 2번 3번 하게되면 안되기 때문에
    • 멱등의 활용
      • 자동 복구 매커니즘
      • 서버에 멱등이 되는 메소드를 요청했는데 결과가 안넘어온다(시간지연 또는 기타문제)
      • 그럼 같은 메소드를 요청할 수 있다
  3. 캐시가능
    • 응답 결과 리소스가 캐시로 되는 것
    • GET, HEAD, POST, PATCH 가능
    • 실제로는 GET, HEAD 정도만 사용
    • POST, PATCH는 캐쉬 구현이 쉽지가 않다.
출처
  • 인프런의 김영한님의 강의를 듣고 정리한 것입니다.