1. HTTP 메서드란?
HTTP 메서드는 클라이언트가 서버에게 요청의 목적이나 종류를 알리는 수단입니다.
HTTP 메소드 종류와 특징
HTTP 메소드의 종류는 총 9가지가 있는데, 주로 사용하는 메소드는 5가지 입니다.
주요 메소드 5가지
- GET : 무언가의 파라미터를 통해 리소스를 조회할 때 보통 사용합니다.
- POST : 신규 리소스를 등록 하거나 파라미터가 아닌 메시지 바디를 통해 요청 데이터 or 프로세스를 처리하는데 사용합니다.
- PATCH : 리소스의 일부, 한 가지 값을 변경할 때 사용하빈다.
- PUT : 리소스의 두 가지 이상의 값을 변경하거나 대체, 혹은 해당 리소스가 없으면 생성할 때 사용합니다.
- DELETE : 리소스를 삭제 합니다.
기타 메소드 4가지
- HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환합니다.
- OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명 합니다.(주로 CORS에서 사용)
- CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정합니다.
- TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행합니다.
기타 메서드 4가지는 아직 저도 사용 해 본 적이 없습니다..
위 다섯 가지 HTTP메서드는 클라이언트의 요청을 처리하는 Controller 에서 RequestMapping 어노테이션의 이름으로 사용됩니다. 어노테이션이 Http 메서드 중 어떤 것을 사용하는지 알려주는 셈이죠.
하나의 표로 요약하면 다음과 같습니다.
안전 은 계속 메서드를 호출해도 리소스를 변경하지 않는다는 의미입니다.
멱등 은 계속 메서드를 호출해도 결과가 똑같다는 뜻입니다. GET / PUT / DELETE는 멱등하다고 볼 수 있지만 POST나 PATCH는 리소스를 변경하기 때문에 멱등하다고 볼 수 없습니다.
캐시가능 은 스프링 캐싱이 가능하다는 뜻입니다. 스프링 캐싱에 대해서는 따로 정리하겠습니다. 쉽게 말하면 캐시 영역에 특정 Key로 데이터를 저장 해 놓으면, 다음에 같은 Key의 값을 조회할 때 미리 저장 해 둔 값을 불러오기 때문에 조회성능이 좋아집니다. 단점으로는 캐시 영역에 메모리를 새로 추가할 경우 어플리케이션을 재부팅 해야할 수 도 있습니다.
HTTP 상태코드란?
HTTP 상태 코드는 클라이언트가 보낸 요청 처리 상태를 응답해 알려주는 것을 말합니다.
보통 100번대에서 500번대를 사용하는데
- 1xx (Informational): 요청이 수신되어 처리중
- 2xx (Successful): 요청 정상 처리
- 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요
- 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없음
- 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함
크게 위와 같은 다섯개로 나눌 수 있습니다. 이 중에서도 Http 메서드 처럼 우리 눈에 자주 보이는 것 들을 찾아보자면..
- 200 OK : 요청 성공
- 204 No Content : 서버가 요청을 성공적으로 수행했지만, 응답 페이로드 본문에 보낼 데이터가 없음 ([4] CUD를 담당하는 Command Service 에서 ResponseEntity를 잠깐 설명했었는데, 여기 있는 204가 ReponseEntity Nothing이 리턴 해 주는 것이다. )
- 400 Bad Request : 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음
- 401 Unauthorized : 클라이언트가 해당 리소스에 대한 인증이 필요함
- 403 Forbidden : 서버가 요청을 이해했지만 승인을 거부함
- 404 Not Found : 요청 리소스를 찾을 수 없음
- 500 Internal Server Error : 서버 문제로 오류 발생, 애매하면 500 오류
- 503 Service Unavailable : 서비스 이용 불가
참고: http 메소드와 상태코드
HTTP 요청 메서드 - MDN
모든 개발자를 위한 웹 기본 지식