본문 바로가기
스프링 공부

Spring Web MVC/ 스프링 RestAPI를 위한 어노테이션

by 코딩마스터^^ 2024. 8. 7.

1. Spring Web MVC

Spring Web MVC는 Spring 프레임워크의 웹 모듈로, HTTP 기반 애플리케이션을 만들기 위한 강력한 기능을 제공합니다. REST API를 구현하는 데 필요한 핵심 기능을 제공합니다.

2. @RestController 어노테이션

@RestController는 @Controller와 @ResponseBody를 결합한 어노테이션으로, RESTful 웹 서비스를 만들기 위해 사용됩니다. 이 어노테이션은 메서드가 반환하는 값을 JSON 또는 XML 형식으로 직렬화합니다.

 

 

직렬화가 뭐야?

직렬화(serialize)란 자바 언어에서 사용되는 Object 또는 Data를 다른 컴퓨터의 자바 시스템에서도 사용 할수 있도록 바이트 스트림(stream of bytes) 형태로 연속전인(serial) 데이터로 변환하는 포맷 변환 기술을 일컫는다. 그 반대 개념인 역직렬화는(Deserialize)는 바이트로 변환된 데이터를 원래대로 자바 시스템의 Object 또는 Data로 변환하는 기술이다. 
이를 시스템적으로 살펴보면, JVM의 힙(heap) 혹은 스택(stack) 메모리에 상주하고 있는 객체 데이터를 직렬화를 통해 바이트 형태로 변환하여 데이터베이스나 파일과 같은 외부 저장소에 저장해두고, 다른 컴퓨터에서 이 파일을 가져와 역질렬화를 통해 자바 객체로 변환해서 JVM 메모리에 적재하는 것으로 보면 된다.

출처: https://inpa.tistory.com/entry/JAVA-☕-직렬화Serializable-완벽-마스터하기 [Inpa Dev 👨‍💻:티스토리]

 

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

 

 

3. @RequestMapping 및 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 어노테이션

이 어노테이션들은 HTTP 메서드와 경로를 매핑하는 데 사용됩니다.

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class MyController {

    @GetMapping("/items")
    public List<Item> getItems() {
        // Get items logic
    }

    @PostMapping("/items")
    public Item createItem(@RequestBody Item item) {
        // Create item logic
    }

    @PutMapping("/items/{id}")
    public Item updateItem(@PathVariable Long id, @RequestBody Item item) {
        // Update item logic
    }

    @DeleteMapping("/items/{id}")
    public void deleteItem(@PathVariable Long id) {
        // Delete item logic
    }
}

 

4. @RequestBody 및 @ResponseBody

  • @RequestBody: HTTP 요청의 본문을 객체로 변환하여 메서드의 파라미터로 전달합니다.
  • @ResponseBody: 메서드의 반환 값HTTP 응답의 본문으로 직렬화합니다.

5. @PathVariable 및 @RequestParam

  • @PathVariable: URL 경로에서 변수를 추출합니다.
  • @RequestParam: URL 쿼리 파라미터메서드 파라미터로 바인딩합니다.
  • @GetMapping("/items/{id}")
    public Item getItemById(@PathVariable Long id) {
        // Get item by ID logic
    }
    
    @GetMapping("/items")
    public List<Item> getItemsByCategory(@RequestParam String category) {
        // Get items by category logic
    }

 

요약

  • Spring Web MVC: RESTful 웹 서비스를 만들기 위한 핵심 기능 제공.
  • @RestController: REST API 컨트롤러를 정의.
  • HTTP 메서드 매핑 어노테이션: @GetMapping, @PostMapping, @PutMapping, @DeleteMapping.
  • @RequestBody 및 @ResponseBody: 요청 본문과 응답 본문 처리.
  • @PathVariable 및 @RequestParam: 경로 변수와 요청 파라미터 처리.

댓글