[HTTP] HTTP 메서드에 관해 아는대로 설명해주세요. (24/03/28)

2024. 3. 28. 10:01공부/면접 준비

목차

 

1. 질문

2. 내용 정리

3. 답변

4. 생각 정리

 

1. 질문

 

HTTP메서드란 클라이언트와 소통하기위해 사용하는 메서드이다.

 

2. 내용 정리 

 

(HTTP프로토콜에 대한 이야기도 해보자)

123

HTTP 메서드의 종류

 - 주요 메서드 5개

GET : 리소스 조회. 서버에 전달하고 싶은 데이터는 query를 사용하여 전달.

POST : 주로 데이터 등록에 사용(데이터 처리 요청). 메시지를 body를 통해 서버로 전달한다.

PUT : 리소스를 대체, 리소스가 없다면 리소스를 생성. 데이터 덮어쓰기

PATCH : 리소스 수정. 리소스의 일부분만 변경하는 방식이다.

DELETE : 리소스 삭제.

 - 4개의 기타 메서드

HEAD : GET과 동일하지만, 상태줄과 헤더만을 반환한다.

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

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

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

사실 기타 메서드의 경우 사용해본 경험이 없기 때문에, 설명해 드리기 어렵습니다.

 

HTTP 메소드의 속성

1) 안전(Safe Method)

메서드를 호출해도 리소스를 변경하지 않는다는 뜻이다. 

GET메소드가 안전 메소드라 볼 수 있다.

 

2) 멱등(Idempotent Method)

메소드를 계속 호출해도 결과가 같다는 뜻으로, 

GET, PUT, DELETE는 멱등하지만, POST와 PATCH는 멱등하지 않다.

 

3) 캐시가능(Cacheable Method)

캐싱을 통해 데이터를 효율적으로 가져올 수 있다는 뜻이다.

GET, HEAD, POST, PATCH가 캐시가 가능하지만, 실제로는 GET과 HEAD만 캐싱이 쓰인다고 한다.

 

HTTP 상태코드

상태 코드는 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능으로, 

100~500번대의 코드를 사용한다.(성공의 200, 클라 오류의 400, 서버 오류의 500만 사용 경험이 있습니다.)

1xx (Informational): 요청이 수신되어 처리중
2xx (Successful): 요청 정상 처리
3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함

 

3. 답변

 

HTTP메서드란 클라이언트와 소통하기위해 사용하는 메서드입니다.

5개의 주요 메서드와 4개의 기타 메서드가 존재하며, 실제로 사용해본 5가지 메서드에 대해서만 설명하겠습니다.

GET은 리소스를 조회하는데 사용되는 메서드이며, 리소스를 변경하지 않는 안전 메서드 입니다. 또, GET은 HEAD와 함께 실제 캐싱을 쓰는 메서드 입니다.(DELETE를 제외한 주요 메서드는 캐싱이 가능하지만 GET만 사용한다고 한다.)

POST는 주로 데이터 등록에 사용(데이터 처리 요청). 메시지를 body를 통해 서버로 전달하며, 메서드를 호출할때 마다 새로운 리소스를 생성하므로 멱등하지 않습니다.

PUT은 리소스를 대체, 리소스가 없다면 리소스를 생성합니다. 메서드를 계속 호출해도 리소스를 지정하고 수정이 이루어지기 때문에, 결과가 같아 멱등한 메서드 입니다.

PATCH는 리소스 수정. 리소스의 일부분만 변경하는 방식입니다. 구현 방법에 따라 멱등성을 보장할 수 없으므로, 멱등하지 않다고 봐야 합니다.

DELETE는 리소스를 삭제하는 메서드 입니다. 

 

4. 생각 정리 

 

POST방식이 GET방식보다 보안측면에서 더 좋다?
GET과 비교하여 URL에 데이터의 정보가 들어 있지 않으므로 조금 더 안전하다고 볼 수 있다.

GET방식이 POST방식보다 속도가 빠르다?
GET 방식은 캐싱을 하기 때문에 여러번 요청시 저장된 데이터를 활용하므로 조금 더 빠를 수 있다.

POST vs PUT
POST와 PUT은 구분해서 사용해야한다. POST는 새로운 데이터를 계속 생성하기 때문에 요청시마다 데이터를 생성하지만, PUT은 사용자가 데이터를 지정하고 데체하는 것이기 때문에 같은 요청을 계속하더라도 데이터가 계속 생성되지는 않는다.

PUT vs PATCH
PUT은 지정한 데이터를 전부 수정하는 Method이지만 PATCH는 정보의 일부분이 변경되는 방법이다. 그래서 PUT은 멱등하지만, PATCH는 멱등하다고 볼 수 없습니다.

(PATCH의 경우 구현 방법에 따라 멱등성을 보장하지 않을 수 있기 때문에 멱등하지 않다고 합니다.)