CS
HTTP Method
sihyeong
2023. 11. 14. 11:52
HTTP Method
서버 구조에서 요청과 응답이 이루어지는 방식을 의미한다. URI로는 리소스를 보내고 HTTP Method를 통해 그 리소스를 어떻게 동작할지를 지정하기 위해 사용한다.
HTTP Method를 사용하게 되면 URI와 동작을 분리하게 되어 URI는 리소스만 식별하면 되고, HTTP Method를 통해 동작을 명확하게 제공하는 이점이 있기 때문에 사용한다.
하지만 HTTP 버전과, 지원하지 않는 서버가 있을 수 있으니 모든것을 HTTP Method에 맞게 할려고 하기 보단 큰 틀을 잡고 그안에서 유연하게 바꿔가면서 사용하는 것이 좋을것 같다.
HTTP Method의 종류
종류는 여러가지가 있으나 주로 사용하는 HTTP Method만 설명하겠습니다.
- GET: 리소스 조회시 사용
- 서버에 전달하고 싶은 데이터는 query(쿼리 파라미터, 쿼리 스트링)을 통해서 전달한다.
- 메시지 바디를 통해 데이터를 전달할 수 있지만, 지원하지 않는 곳이 많아 권장하지 않는다.
- 예) GET /members --> 회원들의 리소스를 조회 시 요청
- POST: 요청 데이터 처리, 주로 등록에 사용
- 새 리소스를 생성하거나 등록할 때 사용한다.
- FORM의 데이터 가공 및 처리
- 회원 등록
- 게시글, 댓글 작성
- 다음에 설명할 PUT과는 다르게 클라이언트는 등록될 리소스의 URI를 모른다.
- 요청 데이터를 처리할 때 사용한다.
- 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
- 주문에서 결제완료 -> 배달시작 -> 배달완료 처럼 단순히 값 변경을 넘어 프로세스의 상태가 변경되는 경우에 사용된다.
- 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우
- 다른 메서드로 처리하기 어려운 경우
- POST의 결과로 꼭 새로운 리소스가 생성되지 않을 수 있다.
- 다른 메서드로 처리하기 애매하거나 어려운 경우 POST를 사용하면 된다.
- 새 리소스를 생성하거나 등록할 때 사용한다.
- PUT: 리소스를 대체할 때 사용한다.
- 리소스가 없으면 생성하고 있으면 대체해 버린다.
- 간단히 말하면 파일의 덮어쓰기라고 생각하면 된다.
- 클라이언트가 리소스를 식별하고 있을 때 사용한다.
- PUT /members/100 처럼 특정한 리소스를 식별하고 있을 때, 100번 회원의 정보를 덮어쓰기 혹은 생성해달라 라고 요청할 때 사용한다.
- 일부 리소스를 수정하는 것이 아니라 기존의 것을 완전히 갈아치우는 덮어쓰기 개념이니 주의해야 한다.
- PATCH: 리소스 부분 변경
- PUT과는 다르게 원하는 부분의 데이터만 변경할 수 있다.
- PATCH를 지원하지 않는 서버도 있을 수 있으니 그럴 땐 POST를 사용하면 된다.
- DELETE: 리소스를 제거할 때 사용한다.
참고
- HTML FORM은 GET과 POST만 지원한다.
이러한 내용을 정리하게 된 계기는 다음과 같다.
- 스프링을 통한 프로젝트를 진행하며 Controller단의 여러 Mapping이 있다는 것을 알게 되었고 어디에 사용되는지 자세히 알아보기 위해 공부하고 정리하게 되었다.
- 기존엔 GetMapping, PostMapping을 통해 모두 처리했다. 그렇게 되니 mapping의 이름이 겹칠 때도 있었고, URL이 너무 복잡해져 깔끔하게 관리할 필요성을 느끼게 되어 공부, 정리하게 되었습니다.