WEB/SPRING

@PutMapping, @PatchMapping, @GetMapping, @PostMapping ์— ๊ด€ํ•˜์—ฌ...

ITTHING 2025. 2. 15. 04:40
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ์ฃผ์ œ: "์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ (E-commerce)"

  • ์ƒํ’ˆ์„ ์กฐํšŒ (@GetMapping)
  • ์ƒˆ๋กœ์šด ์ƒํ’ˆ์„ ์ถ”๊ฐ€ (@PostMapping)
  • ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ˆ˜์ • (์ „์ฒด ๋ณ€๊ฒฝ) (@PutMapping)
  • ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ˆ˜์ • (๋ถ€๋ถ„ ๋ณ€๊ฒฝ) (@PatchMapping)

โœ… 1. @GetMapping (์กฐํšŒ)

๐Ÿ‘‰ ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ๋•Œ

@GetMapping("/products/{id}")
public ResponseEntity<ProductResponseDto> getProduct(@PathVariable Long id) {
    ProductResponseDto product = productService.getProductById(id);
    return ResponseEntity.ok(product);
}

โœจ ์„ค๋ช…

  • GET /products/1 ๊ฐ™์€ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด
  • id๊ฐ€ 1์ธ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ด์„œ ์‘๋‹ต

โœ… 2. @PostMapping (์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€)

๐Ÿ‘‰ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ ์ƒํ’ˆ์„ ๋“ฑ๋กํ•  ๋•Œ

@PostMapping("/products")
public ResponseEntity<Void> createProduct(@RequestBody @Valid ProductRequestDto requestDto) {
    productService.createProduct(requestDto);
    return ResponseEntity.ok().build();
}

โœจ ์„ค๋ช…

  • POST /products ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด
  • requestDto ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ ์ƒํ’ˆ์„ DB์— ์ €์žฅ

โœ… 3. @PutMapping (์ „์ฒด ์ˆ˜์ •)

๐Ÿ‘‰ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ „์ฒด ์ˆ˜์ •ํ•  ๋•Œ

@PutMapping("/products/{id}")
public ResponseEntity<Void> updateProduct(
        @PathVariable Long id,
        @RequestBody @Valid ProductRequestDto requestDto) {
    productService.updateProduct(id, requestDto);
    return ResponseEntity.ok().build();
}

โœจ ์„ค๋ช…

  • PUT /products/1 ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด
  • id=1์ธ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ „๋ถ€ ์ˆ˜์ •
  • ์š”์ฒญ ์‹œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•จ (์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ์ „๋‹ฌํ•˜๋ฉด ๊ธฐ์กด ๊ฐ’์ด ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ)

โœ… 4. @PatchMapping (๋ถ€๋ถ„ ์ˆ˜์ •)

๐Ÿ‘‰ ์ƒํ’ˆ ์ •๋ณด๋ฅผ ์ผ๋ถ€๋งŒ ์ˆ˜์ •ํ•  ๋•Œ

@PatchMapping("/products/{id}")
public ResponseEntity<Void> updateProductPrice(
        @PathVariable Long id,
        @RequestBody Map<String, Object> updates) {
    productService.updateProductPartially(id, updates);
    return ResponseEntity.ok().build();
}

โœจ ์„ค๋ช…

  • PATCH /products/1 ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด
  • ํŠน์ • ํ•„๋“œ (price, stock ๋“ฑ) ๋ถ€๋ถ„์ ์œผ๋กœ ์ˆ˜์ • ๊ฐ€๋Šฅ
  • ์˜ˆ๋ฅผ ๋“ค์–ด { "price": 20000 }๋งŒ ๋ณด๋‚ด๋ฉด ๊ฐ€๊ฒฉ๋งŒ ์ˆ˜์ •๋จ

โœ… ์ •๋ฆฌ

์–ด๋…ธํ…Œ์ด์…˜ HTTP ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ๋ชฉ์  ํŠน์ง•

@GetMapping GET ๋ฐ์ดํ„ฐ ์กฐํšŒ URL์— ํŒŒ๋ผ๋ฏธํ„ฐ ํฌํ•จ (/products/1)
@PostMapping POST ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์š”์ฒญ ๋ณธ๋ฌธ (RequestBody)์„ ํ™œ์šฉ
@PutMapping PUT ๋ฐ์ดํ„ฐ ์ „์ฒด ์ˆ˜์ • ๋ชจ๋“  ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์š”์ฒญํ•ด์•ผ ํ•จ
@PatchMapping PATCH ๋ฐ์ดํ„ฐ ์ผ๋ถ€ ์ˆ˜์ • ๋ณ€๊ฒฝํ•  ํ•„๋“œ๋งŒ ์š”์ฒญ ๊ฐ€๋Šฅ

 

๋ฐ˜์‘ํ˜•