공개 글

@GetMapping? @PostMapping?

영발개발 2025. 2. 19. 17:21

 스프링 부트 강의 영상과 스프링 부트 관련 코드들을 보다보면 @GetMapping과 @PostMapping을 수도 없이 봐왔을 것이다. 잘 쓰고는 있었지만 얘네 또한 누가 '설명해 보세요~'하면 명확하게 답변을 못 낼 거 같았다. 그래서 또 얘네에 대해서 다시 찾아봤고 나 스스로 헷갈리지 않게 정리를 해볼까 한다. 우선은 RequestMapping부터 알아보자.


@RequestMapping

 

 클라이언트가 특정 url로 요청을 보내면 Controller에서는 어떤 방식으로 처리를 해야할지 정의를 해야하는데, 이때 특정 메서드와 매핑하기 위해 사용하는 것이 RequestMapping이다. RequestMapping은 value와 method를 사용하는데 예시를 한 번 보자.

@RestController
@RequestMapping("/users") // 모든 요청 URL이 "/users"로 시작함
public class UserController {

    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String getUserInfo() {
        return "User Info";
    }
}

 

 해당 코드를 해석해 보자면,

' '/users/info'이라는 url 값으로 요청이 들어왔을 때, 'getUserInfo()' 메서드를 매핑해주고 GET 방식으로 처리해줘 '

라고 생각하면 된다. 

 

@GetMapping, @PostMapping

 

그렇다면, 처음에 알아보자 했던 GetMapping과 PostMapping은 뭘까? @RequestMapping을 좀 더 간결하게 쓸 수 있도록 만든 것이다. 예시를 보자면,

@RestController
@RequestMapping("/users")
public class UserController {

    // GET 요청 예시 (유저 조회)
    @GetMapping("/{id}")
    public String getUser(@PathVariable Long id) {
        return "User ID: " + id;
    }

    // POST 요청 예시 (새로운 유저 추가)
    @PostMapping
    public String createUser(@RequestBody UserDto userDto) {
        return "Created User: " + userDto.getName();
    }
}
  • @GetMapping("/{id}") ➡️ GET /users/1 요청을 받으면 해당 ID의 유저 정보를 반환
  • @PostMapping ➡️ POST /users 요청을 받아서 유저를 생성(JSON 데이터를 @RequestBody로 받음

 그렇다면, 여기서부터 의문점이 든다. '그럼 GetMapping이랑 PostMapping, 꼭 안 써도 되는 거 아냐?'

 지금부터는 이 친구들을 써야하는 이유에 대해서 알아보자.


 

@RequestMapping 대신 @GetMapping과 @PostMapping을 사용하는 이유 ( +@PutMapping, @DeletMapping)

 

1️⃣ 가독성이 좋아진다. (더 직관적이다.)

 가장 눈에 보이는 이유는 코드가 짧아지고 명확해진다. 또한 어떤 HTTP인지 한눈에 보이므로 유지보수가 쉬워진다. 비교 예시를 통해 보면 한 눈에 보인다.

// ❌ @RequestMapping 사용 (길고 복잡함)
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String getUsers() { return "User List"; }

// ✅ @GetMapping 사용 (더 직관적)
@GetMapping("/users")
public String getUsers() { return "User List"; }

 

2️⃣ RESTful한 API 설계에 적합하다.

 @GetMapping(조회), @PostMapping(등록)은 HTTP 메서드별로 명확하게 역할을 구분해주므로 RESTful API 규칙에 맞게 개발이 가능하다. @PutMapping(수정)과 @DeletMapping(삭제) 또한 마찬가지다.

// ❌ @RequestMapping 사용 (어떤 HTTP 메서드인지 직관적이지 않음)
@RequestMapping("/users") 
public String handleRequest() { return "Some Response"; }

// ✅ @GetMapping / @PostMapping 사용 (RESTful API 설계에 맞음)
@GetMapping("/users")  // 조회
public String getUsers() { return "User List"; }

@PostMapping("/users")  // 생성
public String createUser(@RequestBody UserDto userDto) { return "User Created"; }

 

3️⃣ 유지보수 및 협업에 유리하다.

 해당 어노테이션들을 알맞게 사용하면 코드가 깔끔해지고, 덕분에 협업 시에도 역할을 쉽게 파악이 가능하다.

@RequestMapping은 method 속성을 확인해야 하므로 실수를 할 가능성이 높아진다.

// ❌ @RequestMapping 사용 (코드를 볼 때 method를 일일이 확인해야 함)
@RequestMapping(value = "/users", method = RequestMethod.PUT)
public String updateUser(@RequestBody UserDto userDto) { return "User Updated"; }

// ✅ @PutMapping 사용 (한눈에 역할을 파악 가능)
@PutMapping("/users")
public String updateUser(@RequestBody UserDto userDto) { return "User Updated"; }

 

 마지막으로 정리하자면, @RequestMapping 대신 해당 어노테이션들을 알맞게 사용한다면, 코드가 더 직관적이고 간결해지면서 그로인해 유지보수와 협업도 편리해진다.

'공개 글' 카테고리의 다른 글

CSS 기본 - 2  (0) 2025.03.13
CSS 기본 - 1  (1) 2025.03.12
html 기본 태그  (0) 2025.02.04
API와 REST API  (0) 2025.01.20
HTTP(HyperText Transfer Protocol)  (1) 2025.01.16