본문 바로가기

Development/Spring

HTTP method의 개념과 종류 정리

 

 

 

개념

 

 

 

HTTP(HyperText Transfer Protocol) method는 요청응답 과정에서 resource(자원)를 전달해 주는 URI와 함께 행위전달하는 역할을 한다. 클라이언트 / 서버, 서버 / 서버 간 전송에서 이용한다. HTTP 메시지를 통해 HTML파일, 텍스트파일, 영상파일 등 대부분 형태데이터전송 가능하다.

 

HTTP 메소드는 @RequestMapping, @메소드명Mapping 등을 통해 handler methodURL 주소매핑한다. 클라이언트가 특정 URL입력하면 HTTP 메소드를 통해 해당 URL에 매핑된 handler method가 호출되어 요청전달하고, 응답을 되돌려 줄 view의 이름을 지정한다. 응답을 view에서 html파일 등의 방식으로 시각화한 뒤, 다시 HTTP 메소드를 통해 클라이언트에게 전송한다. 시각화 과정은 spring framework의 Thymeleaf와 같은 템플릿 엔진의 도움을 받을 수 있다.

 

 

 

종류

 

 

 

GET

 

 

GET 메소드는 주로 리소스조회하기 위해 사용된다. body가 아닌 query string을 통해 메시지를 전달한다. query string은 ?key=value의 형식으로, &를 통해 여러 value를 묶을 수 있다. mapping annotation은 @GetMapping이다.

 

리소스를 변경하지 않으므로 안전하다는 장점이 있으나, 많은 양의 데이터를 보내기에 적합하지 않다.

 

query string은 URL포함되기 때문에 즐겨찾기에 추가할 수 있다는 장점도 있다. 반대로 개인정보보안이 필요한 내용은 query string에 담기 적합하지 않다.

 

 

POST

 

 

POST는 단순한 등록, 조회, 수정, 삭제(CRUD)를 넘어 보다 복잡한 프로세스를 수행하거나 대량의 데이터를 전송해야 할 때 사용된다. 주로 리소스 등록 과정에서 많이 이용하게 된다. mapping annotation은 @PostMapping이다.

 

POST 메소드는 query string이 아닌 request body에 프로세스를 담아 전달한다. 또한 URL에 표시되지 않으므로 개인정보등록하기에 적합하며, 많은 양의 값을 보낼 수 있다.

 

POST 메소드는 프로세스를 담고 있기 때문에, 응답이 느리다고 해서 여러 번 요청 시 중복 처리될 수 있으므로 주의해야 한다. 게시글을 여러 번 올리면 게시글이 여러 번 등록되는 것을 예로 들 수 있다.

 

아래의 PUT 메소드도 리소스를 등록할 수 있지만, 실무에서는 대부분 POST 메소드를 사용한다.

 

 

PUT

 

 

PUT 메소드는 리소스생성하거나 새로운 리소스로 대체하기 위해 사용된다. mapping annotation은 @PutMapping이다.

 

POST 메소드와 달리 클라이언트리소스의 구체적인 전체 경로 인지하고 있어야 하며, 리소스가 갱신될 URI(URL + URN)를 직접 지정한다. 이후 서버가 아닌 클라이언트가 직접 리소스관리한다.

 

기존 리소스를 덮어 씌우기 때문에 리소스의 부분 수정에는 적합하지 않다. 부분 수정을 위해서는 아래의 PATCH 메소드를 이용하는 것이 좋다.

 

 

PATCH

 

 

PATCH 메소드는 리소스의 특정 field만 변경하기 위해 사용된다. mapping annotation은 @PatchMapping이다.

 

PUT 메소드는 리소스 전체를 덮어 씌우므로, 일반적으로 수정에 쓰기 쉽지 않다. 따라서 실무에서는 수정에 PUT 메소드를 주로 사용한다.

 

 

DELETE

 

 

DELETE 메소드는 리소스삭제하기 위해 사용된다. mapping annotation은 @DeleteMapping이다.

 

 

HEAD

 

 

GET과 기본적으로는 동일하나, 메시지 없이 상태 줄과 헤더만 반환한다.

 

 

OPTIONS

 

 

OPTIONS 메소드는 대상 리소스에 대한 통신 가능 메소드를 설명해 준다.

 

 

CONNECT

 

 

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

 

 

TRACE

 

 

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