본문 바로가기
Java/Spring Boot

Spring Boot 매핑 어노테이션 종류 알아보기 (@GetMapping, @PostMapping)

by 산코디 2023. 1. 27.




안녕하세요.
오늘은 Spring, Spring Boot controller 영역에서 많이 사용하는 mapping 어노테이션에 대해 정리한 내용을 포스팅하려고 합니다. spring의 버전이 4.3 이상부터 지원되는 기능인 GetMapping, PostMapping, PutMapping, DeleteMapping 네 종류에 대해 정리해 봤습니다.
요즘은 frontend의 다양한 기술이 많이 나오면서 spring boot의 간단한 backend를 많이 사용하게 되는데요. spring boot를 간단하게 api로 많이 사용하기 때문에 mapping 어노테이션의 종류를 정리해 보는 것도 많은 도움일 될 것 같습니다. :)

그럼 어노테이션별로 어떤 특징이 있는지 알아보겠습니다.


@GetMapping

@GetMapping("/get/list")
public String getList() {
    return "getList";
}

@GetMapping의 작성 예시입니다. 인자값으로는 controller의 경로를 넣어주면 됩니다.
해당 어노테이션의 특징은 호출하게 되는 서비스나 UI 영역에서 api로 전달하고자 하는 파라미터 정보를 url에 포함시켜 호출할 수 있습니다.
@GetMapping 어노테이션을 사용하는 경우는 일반적인 조회나 보안에 크게 문제 안 되는 파라미터를 전달하여 조회를 하게 되는 경우 사용하기에 적절합니다.

ex) '/get/list?name=test&age=12'

위의 예시처럼요!

그럼 다음은 @PostMapping 어노테이션을 알아보도록 하겠습니다.


@PostMapping

@PostMapping("/post/list")
public String postList() {
    return "postList";
}

@PostMapping의 작성 예시입니다. 인자값에 경로를 넣는 것은 @GetMapping과 동일합니다.
해당 어노테이션의 특징은 @GetMapping과는 다르게 파라미터를 url로 받는 것이 아닌 내부적으로 post처리가 되어 호출해야 가능합니다. PostMapping 처리가 된 api의 경우는 호출하고자 하는 서비스 영역에서 method 타입을 반드시 post로 설정하여 호출해야 합니다.
@PostMapping 어노테이션을 사용하는 경우는 데이터를 신규로 등록할 때 사용하면 적절합니다.

반응형

@PutMapping

@PutMapping("/put/list")
public String putList() {
    return "putList";
}

@PutMapping 어노테이션을 사용하는 경우는 데이터를 수정(업데이트) 처리할 경우 사용하면 적절합니다.


@DeleteMapping

@DeleteMapping("/delete/list")
public String deleteList() {
    return "deleteList";
}

@DeleteMapping 어노테이션을 사용하는 경우는 데이터를 삭제 처리할 경우 사용하면 적절합니다.


마무리

어노테이션 특징
@GetMapping 데이터 정보를 조회할 때 사용
@PostMapping 데이터 정보를 신규 추가할 때 사용
@PutMapping 데이터 정보를 수정할 때 사용
@DeleteMapping 데이터 정보를 삭제할 때 사용

위와 같이 어노테이션 별로 정리를 할 수 있습니다. 저는 개인적으로 @GetMapping과 @PostMapping 두 종류 위주로만 대부분 사용을 해왔었는데, 이번 글을 정리하면서 @PutMapping과 @DeleteMapping도 업무에서 활용해 봐야겠다는 생각을 했습니다. 기능을 만든 이유는 다 있는 것이고, @GetMapping이나 @PostMapping으로만 CRUD 처리를 다 한다고 하면 결국 어떤 api가 데이터를 조회하는지 수정, 등록, 삭제하는지 상세 서비스 로직을 봐야 하기 때문에 mapping 어노테이션을 통해 기능을 분리해 개발하는 것이 바람직해 보입니다.


그럼 오늘도 저의 작고 소중한 글을 읽어주셔서 감사합니다. :)




반응형