Hyunebee

모든 개발자를 위한 HTTP 웹 기술 - HTTP Method 본문

HTTP

모든 개발자를 위한 HTTP 웹 기술 - HTTP Method

Hyunebee 2022. 1. 8. 13:26

HTTP 설계

• 회원 목록 조회 /read-member-list

• 회원 조회 /read-member-by-id

• 회원 등록 /create-member

• 회원 수정 /update-member

• 회원 삭제 /delete-member

 

이것은 좋은 URI 설계가 아니다

 

리소스 식별이 가장 중요하다.

 

회원의 등록 수정 조회 등이 리소스가 아니다. 

URI는 리소스를 식별하기 위해 사용해야지 행위를 알기위해 사용하면 안됨

 

회원이 리소스인데 메소드를 어떻게 구분할까? -> HTTP Method들이 대신 처리해준다.

• 회원 목록 조회 /members

• 회원 조회 /members/{id}

• 회원 등록 /members/{id}

• 회원 수정 /members/{id}

• 회원 삭제 /members/{id}

 

HTTP 메서드 종류

GET : 리소스 조회

 서버에 전달하고 싶은 데이터는 query를 통해 전달

 메세지 바디를 사용해서 전달할 수 있찌만 지원하지 않는 곳이 많아서 권장x

 

POST: 요청 데이터 처리

 메세지 바디를 통해 서버로 요청 데이터 전달

 

PUT: 리소스를 대체 , 해당 리소스가 없으면 생성

  쉽게 이야기하면 덮어 쓰기(완전히 대체)

  클라이언트가 구체적인 전체 리소스 위치를 알고 URI를 지정한다.

 

PATCH: 리소스 부분 변경

 

DELETE: 리소스 삭제

HEAD: GET과 동일하지만 메시지 부분을 제외하고 상태와 헤더만 반환

OPTIONS: 대상 리소스에 대한 통긴 가능 옵션(주로 CORS에서 사용)

CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정

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

HTTP Method 속성

1.안전

 호출해도 리소스를 변경하지 않는다.

2.멱등

 f(f(x)) = f(x)

 몇번이든 호출해서 결과가 똑같다.

 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 교려하지 않는다.

 POST: 멱등이 아니다 두번 호출하면 결제가 중복해서 발생할 수 있다.

 GET: 몇번이든 조회하든 같은 결과가 조회된다.

 PUT: 결과가 대체된다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다.

 DELETE: 결과를 삭제한다. 같은 요청을 여러번 해도 최종 결과는 같다.

 

3.캐시가능

 GET,HEAD,POST,PATCH(2개만 주로 사용)

 

 

 

HTTP Method 활용

 

Client -> Server 데이터 전송

 

1. 쿼리 파라미터를 통한 데이터 전송

 주로 정렬 필터(검색어), GET방식

2. 메세지 바디를 통한 데이터 전송

 POST,PUT,PATCH

 

4가지 상황

1. 정적 데이터 조회

 이미지, 정적 텍스트 문서

 - 정적 데이터는 일반적으로 쿼리 파라미터 없이 리소스 경로로 단순하게 조회가능하다.

2. 동적 데이터 조회

 주로 검색, 게시판에서 정렬 필터 검색

 - 쿼리 파라미터 사용, 조회 조건을 줄여주거나 조회 결과를 정렬하는 조건에 주로 사용 (GET)

3. HTML Form을 통한 데이터 전송

 회원 가입, 상품 주문

4. HTTP API를 통한 데이터 전송

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard