HTTP 웹 기본 지식 - HTTP API 만들기 #04

박정현·2022년 8월 19일
0

http

목록 보기
4/7

API URI 고민

가장 중요한 것은 리소스 식별

  • 리소스의 의미는 뭘까?
    • 회원을 등록하고 수정하고 조회하는게 리소스가 아니다
    • 회원이라는 개념 그 자체가 바로 리소스다
  • 리소스를 어떻게 식별하는게 좋을까?
    • 회원을 등록하고 수정하고 조회하는것을 모두 배제한다
    • 회원이라는 리소스만 식별하면 된다

API URI 설계

  • URI는 리소스만 식별
  • 리소스와 행위를 분리한다 (리소스:회원 / 행위:조회,등록,삭제,변경)

그럼 어떻게 구분할것인가?? - HTTP 메서드가 행위 구분해준다.

  • 회원, 목록 조회 /members
  • 회원, 조회 /members/{id}
  • 회원, 등록 /members/{id}
  • 회원, 수정 /members/{id}
  • 회원, 삭제 /members/{id}

HTTP 메서드

주요 메서드

  • GET : 리소스 조회
  • POST : 요청 데이터 처리 , 주로 등록
  • PUT : 리소스 대체, 리소스가 없으면 생성
  • PATCH : 리소스 부분 변병
  • DELETE : 리소스 삭제
  • 그 외 HEAD, OPTIONS, CONNECT, TRACE 등이 존재함
  • GET
    • 리소스 조회
    • 서버에 전달하고 싶은 데이터는 query를 통해서 전달
    • 메시지 바디를 사용해서 전달 할 수는 있지만 , 지원 안하는 곳이 많아서 권장 x
  • POST
    • 요청 데이터 처리
    • 메시지 바디를 통해 서버로 요청 데이터 전달
    • 다른 메서드로 처리하기 애매한 경우
    • 서버는 요청 데이터를 처리
    • 메시지 바디로 들어온 데이터를 처리하는 모든 기능을 수행
    • 리소스 등록,프로세스 처리에 사용한다
  • PUT
    • 리소스가 있으면 '완전히' 대체 (삭제하고 생성 ,갈아 치운다고 생각하자)
    • 리소스가 없으면 생성
    • 쉽게 이야기해서 덮어버린다고 생각하자
    • 중요한점. 클라이언트가 리소스를 식별
    • 클라이언트가 리소스 위치를 알고 URI를 지정한다, 그래야 정확히 그 리소스를 대체할 수 있으니까?
  • PATCH
    • 리소스 부분 변경 , 리소스의 부분적으로 데이터를 변경 할 수 있다
  • DELETE
    • 리소스 제거

HTTP 메서드 속성

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

    • 호출해도 리소스를 변경하지 않는다.
      (변경이 일어나는 POST,PUT등은 안전하지 않다)
  • 멱등(Idempotent)

    • 한 번 호출하든 여러번 호출하든 결과가 똑같다
    • 외부 요인으로 중간에 리소스가 변경되는 것 까진 고려하지 않는다.
    • GET : 한번 조회하든 여러번 조회하든 결과가 똑같다
    • DELETE : 최종적으로 삭제는 결과가 똑같다
    • (멱등이아닌것) POST : 여러번 호출하면 중복해서 발생할수있다
  • 캐시가능(Cacheable)

    • GET,HEAD,POST,PATCH 캐시가 가능
    • 실제론 GET,HEAD정도만 캐시로 사용함

김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 참고하여
작성한 자료입니다.

profile
빠샤

0개의 댓글