ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP (4) - HTTP메서드
    카테고리 없음 2023. 9. 13. 12:32

     

    1. HTTP API

     

    - 요구사항 : 회원 정보 관리 

     

    > 회원 목록 조회 (/read-memebrList)

    > 회원 조회(/read-memebr-by-id)

    > 회원 등록(/create-member)

    > 회원 수정(/update-member)

    > 회원삭제 (/delete-member)

     

    - API설계에 가장 중요한 것은 리소스를 식별할 수 있어야한다는 것이다.

     

    1.2 API URI 고민 

     

    - 리소스가 의미하는 것은 : 회원 등록, 수정등 행위가 아닌 회원 자체이다.

    - 리소스는 어떻게 식별하는 것이 좋은가: 행위는 배제 리소스를 URI에 매핑

     

    > 회원 목록 조회 (/member)

    > 회원 조회(/member/{id})

    > 회원 등록(/member/{id})

    > 회원 수정(/member/{id})

    > 회원삭제 (/member/{id})

     

    - 그렇다면 이를 어떻게 구분해야할까?

    - 중요한 것은 URI는 리소스만 식별하고, 행위는 메서드를 통해 구분하는 것이다.

     

     

    2. HTTP 메서드 - GET,POST

     

     주요메서드는 

    GET : 리소스 조회

    POST : 요청 데이터 처리, 주로 등록

    PUT : 리소스 대체 (해당 리소스 없으면 생성)

    PATCH: 리소스 부분 변경

    DELETE: 리소스 삭제 

     

    기타메서드는 

    HEAD : GET과 동일하지만, 메시지 제외, 상태줄과 헤더만 반환

    OPTIONS: 리소스에 대한 통신 가능 옵션을 설명

    CONNECT: 리소스로 식별되는 서버에 대한 터널을 설정

    TRANCE: 리소스에 대한 경로를 따라 메시지 루프백 테스트 수행 

     

    2.1 GET

     

    - 리소스 조회

    - 전달하고 싶은 데이터는 쿼리스트링을 통해 전달한다.

    - 메시지 바디를 사용할 수도 있지만 권장하진 않는다.

     

    출처: HTTP(인프런)김영한

     

    2.2 POST

     

    - 요청 데이터 처리

    - 메시지 바디를 통해 서버로 데이터 전달 

    - 서버는 요청 데이터를 처리한다. (바디를 통해 들어온 데이터를 처리하는 모든 기능 수행)

    - 주로 신규 리소스 등록, 프로세스 처리에 사용

     

    출처: HTTP(인프런)김영한

    * POST를 통해 신규 리소스 등록하면 요청 path와 응답에 location 다름 

    * 리소스 url POST 요청이 오면, 이 데이터를 어떻게 처리할지 리소스마다 다름 

    * 애매하면 POST가 짱

     

    3. PUT,PATCH,DELETE

     

    3.1 PUT : 리소스 대체 (없이면 새로 생성, 덮어쓰기)

                    POST와의 차이점은 클라이언트가 PATCH하고 싶은 리소스 (/member/100)을 정확하게 식별해야함 

                    POST는 그냥 새로 생성도 해줌 (요청시 정확하게 리소스 식별할 필요 없다)

     

    *리소스 완전 대체 -> 부분만 대체하는거 아님

    (member/100 age=10으로 수정 > 원래 name,age있던 memeber/100이 age=50만 남음)

     

    3.2 PATCH : 리소스 부분 변경 

    3.4 DELETE : 리소스 제거 

     

    4. HTTP 메서드의 속성

     

    - 안전 : 호출해도 리소스 변경하지 않는다. 

     

    - 멱등 : > 한 번호출하던, 두 번 호출하든 결과가 같다.

                > GET,PUT,DELETE (멱등), POST -> 멱등x 두번 결제 호출 -> 중복 발생

                > 자동복구 매커니즘, 서버가 TIMEOUT등 정상 응답 못줄 때, 클라이언트가 같은 요청을  다시해도 괜찮은가

     

    - 캐시가능 : 응답 결과 리소스 캐시해서 사용가능?

                        GET,HEAD,POST,PATCH 캐시가능 -> GET과 HEAD만 캐시 사용

                       (캐시는 임시저장정도 의미)

     

     

Designed by Tistory.