ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP API - Intro
    개발 2021. 2. 2. 02:20

    요구사항

     

    회원 정보 관리 API를 만들어 보자.

     

    API URI 설계 (리소스 설계)

    • 회원 목록 조회
    • 회원 조회
    • 회원 등록
    • 회원 수정
    • 회원 삭제

    리소스의 의미는?

    회원을 등록하고 수정하고 조회하는게 리소스가 아니고, 회원이라는 개념 자체가 리소스다.

     

    리소스를 어떻게 식별하는게 좋을까?

     

    회원을 등록하고 수정하고 조회하는 것을 모두 배제하고 회원이라는 리소스만 식별하면 된다.

    -> 회원 리소스를 URI에 맵핑.

     

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

    → 어떻게 구분할 것인가? HTTP의 Method를 통해서 구분짓는다.

     

    URI는 리소스만 식별할 수 있어야 한다.

    리소스와 해당 리소스를 대상으로 하는 행위를 구분 짓는다.

     

    리소스 : 회원 / 행위 : 조회, 등록, 삭제, 변경

    리소스는 명사, 행위는 동사

     

    HTTP METHOD

    -클라이언트가 서버에 요청을 했을 때 어떤 행동을 하기를 바라는 것을 암시하는 것.

     

    주요 메소드

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

    기타 메소드

    • HEAD : GET과 동일하지만 메시지 부분을 제외하고, 상태줄과 헤더만 반환한다.
    • OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을 설명(주로 CORS에서 사용한다 한다..)
    • CONNECT : 대상 자원으로 식별되는 서버에 대한 터널을 설정
    • TRACE : 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행한다.

    HTTP METHOD의 속성

    안전 (Safe)

    - 호출해도 리소스를 변경하지 않는다 ? 안전하다의 의미는 해당 리소스만 고려하는 것이다.

     

    멱등

    - 한번 호출 하든 두번 호출 하든 n번 호출하든 결과가 똑같다.

     

    멱등 메소드

    • GET(한 번 하든 n번 하든 같은 결과가 조회 된다.)

    • PUT(결과를 대체한다. 같은 요청을 여러번 해도 최종 결과는 같다)

    • DELETE(결과를 삭제, 같은 요청을 여러번 해도 삭제된 결과는 똑같다.)

    • POST( X, 결과가 매번 바뀐다)

    멱등의 활용 방법

    • 자동 복구 메커니즘, 서버가 TIMEOUT 등 장애로 인해 제대로 된 응답을 못줬을 때, 클라이언트가 같은 요청을 보내도 되는지로 판단한다. 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지 고려하지 않는다.

    캐시 가능
    - 응답 결과 리소스를 캐시해서 사용해도 되나?

    GET, HEAD, POST, PATCH 캐시 가능하나 실제로는 GET, HEAD 정도만 캐시로 사용한다.

    캐시 키로 고려해야하는데 구현이 쉽지 않다.

    실무에선 GET만 캐시로 사용한다고 생각하면 된다. 

    '개발' 카테고리의 다른 글

    HTTP METHOD - PUT&PATCH&DELETE  (0) 2021.02.02
    HTTP METHOD - GET & POST  (0) 2021.02.02
    HTTP  (0) 2021.01.05
    URI와 웹 브라우저 요청 흐름  (0) 2021.01.05
    쿠키&세션  (0) 2020.12.23
Designed by Tistory.