본문 바로가기
코딩log/Spring Framework

[Spring Framework]HTTP요청 처리하기 - ① HTTP method 맵핑

by 벨크 2023. 7. 29.
반응형

  HTTP란 대표적인 서버 / 클라이언트 간의 요청/응답 프로토콜입니다. 현재 대부분의 웹 서비스들이 HTTP 통신을 하고 있습니다. 스프링 프레임워크 기반의 웹 애플리케이션들도 대부분 HTTP로 요청을 받아 처리합니다.

 

  특정 요청을 받아 처리하는 것을 Handler라고 합니다. 그렇다면 HTTP 요청을 받아 처리하는 것은 HTTP Handler라고 하겠죠? 그렇다면 스프링에서 HTTP Handler를 어떻게 구성하고, 또 HTTP 요청을 처리하는지 알아보겠습니다.

 


HTTP요청의 종류

HTTP 요청 처리하기 - ① HTTP Method 맵핑

 

HTTP 요청의 종류

 

  HTTP 요청을 처리하기에 앞서, HTTP 요청의 종류에 무엇이 있는지 알아보겠습니다. 웹 서비스들을 개발해 본 경험이 있는 사람들이라면, POST나 GET이라는 단어를 많이 들어보셨을 텐데요. 이 둘이 대표적인 HTTP 요청의 종류입니다.

 

  저도 처음에는 HTTP 요청이 POST와 GET 두 가지밖에 없는 줄 알았는데요. 공부해 보니 생각보다 다양한 종류의 HTTP 요청들이 있었습니다.

 

  • GET : GET method는 서버로부터 특정 리소스의 출력을 요청합니다. GET 요청은 데이터를 검색할 때 사용합니다. 데이터를 캐싱할 수 있고, URL에 데이터가 노출되기 때문에 민감한 데이터 전송 시에는 사용하지 않는 게 좋습니다.
  • HEAD :  HEAD method는 GET 요청과 동일한 응답을 요청하지만, 응답 본문(Response Body)은 제외합니다.
  • POST : POST method는 서버에 데이터(엔티티)를 제출(송신)합니다. 클라이언트가 서버 리소스를 수정하거나 새로 만들 때 사용합니다.
  • PUT : PUT method는 클라이언트가 서버 리소스를 수정하거나 새로 만들 때 사용하는데, 현재 리소스를 전송한 데이터로 전부 교체합니다.(변경되는 부분만 보냄)
  • DELETE : 서버의 특정 리소스를 삭제하는 요청입니다.

  대부분이 GET과 POST method만 아는 이유는 나머지 요청들이 사실 잘 쓰이지 않기 때문입니다. 스프링의 HTTP Handler는 이 요청들을 어떻게 처리하는지 코드로 알아봅시다.

 

HTTP 요청 Method 맵핑

  스프링 프레임워크에서 HTTP method를 맵핑하는 방법은, @RequestMapping이라는 어노테이션을 사용하면 됩니다. 컨트롤러 클래스나 메서드 위에 선언하면 됩니다.

 

@Controller
public class SampleController {
	

    @RequestMapping(method = RequestMethod.GET, value = "/hello")
    public String getHello(){
        return "Hello GET Reqeust";
    }
    
    //다양한 method를 처리하고 싶을때는 배열로 선언
    @RequestMapping(method = {RequestMethod.GET, RequestMethod.POST}, value="/multipleHello")
    public String multipleHello(){
        return "Hello Multiple Request method";
    }
}

  

  @RequestMapping에 method를 선언하는 방식은 조금 귀찮다는 느낌이 들죠? 그래서 스프링은 조금 더 간단하게 HTTP method를 맵핑할 수 있는 어노테이션을 제공합니다. 그게 바로 @GetMapping, @PostMapping... 등등의 어노테이션입니다. 방식은 마찬가지로 핸들러 클래스나, 메서드에 해당 어노테이션을 선언해 주면 됩니다.

 

@Controller
public class SampleController {

    @PostMapping(value="/hello")
    public String postHello(){
        return "Hello POST Request";
    }
    
    @GetMapping(value="/gethello")
    public String getHello(){
        return "Hello GET Request";
    }
}

 


이전 글: Spring Bean의 초기화와 종료

 

[Spring Framework]Spring Bean의 초기화와 종료

어떤 인스턴스를 사용하다 보면 인스턴스 생성 시 생성자에서 처리해야 할 일들이 있고, 객체의 소멸(인스턴스 해제) 전에 처리해야 할 작업들이 있습니다. 예를 들면 네트워크 소켓이나 DB에 연

belklog.tistory.com

 

 

반응형

댓글