백엔드/HTTP

HTTP 4일차

한뜽규 2023. 3. 8. 21:27
728x90

HTTP 메서드에 대해 알아본다.

 

  • HTTP API를 만들어보자

만약 학생 정보 관리 API를 만들어라 라고 한다면

지금의 우리는 URI를

- 학생 목록 조회 /read-member-list

- 학생 조회 /read-member-by-id

- 학생 등록 /create-member

- 학생 수정 /update-member

- 학생 삭제 /delete-member

 

이렇게 설계할 것이다.

 

하지만 이렇게 설계하는 것은 좋지 않은 방법이다.

리소스가 식별이 되도록 설계를 해야한다.

여기서는 '학생 목록 조회'가 리소스가 아니라, 학생 그 자체가 리소스이다.

조회든, 수정이든 신경쓰지 않고 학생이라는 리소스만 식별하면 되기 때문에 학생 리소스를 URI에 매핑한다.

그럼 이렇게 리소스가 학생이라는 것을 알았는데, 조회나 수정은 어떻게 해야할까?

우리는 이 행위를 메서드에 넘기게 된다.

 

  • HTTP 메서드

HTTP 주요 메서드 종류에는

GET : 리소스 조회

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

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

PATCH : 리소스 부분 변경

DELETE : 리소스 삭제

가 있다.

 

GET

리소스 조회

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

 

이렇게 서버에 리소스 조회를 한다.

 

POST

요청 데이터 처리

메시지 바디를 통해 서버로 요청 데이터를 전달하며, 들어온 데이터를 처리하는 모든 기능을 수행한다.

POST는 서버가 아직 식별하지 않은 새 리소스를 생성하거나 요청 데이터를 처리하거나, 아니면 다른 메서드로 처리하기 애매한 경우에 사용한다. (거의 만능이라고 한다)

 

PUT

기존에 있던 리소스를 대체한다.

리소스가 있으면 대체하고 리소스가 없으면 생성한다.

POST와의 차이점은 PUT은 클라이언트가 리소스의 위치를 알고 URI로 지정한다.

 

리소스를 대체하는 경우만 살펴보자.

 

PATCH

PUT과 같이 대체하는 것이 아니라 부분만 변경한다.

 

DELETE

리소스를 제거해버린다.

 

HTTP 메서드의 속성

- 안전

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

- Idempotent

호출 횟수에 관계 없이 같은 결과가 나온다.

- 캐시 가능

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

 

이러한 속성들이 있다.

각각의 메서드들에 살펴보면

HTTP 메서드 안전 Idempotent 캐시 가능
GET O O O
POST X X O
PUT X O X
DELETE X O X
PATCH X X O