SPRING

[SPRING] 1. Controller๋กœ api์ฃผ์†Œ ๋‹ค๋ค„๋ณด๊ธฐ

๊น€RPG 2023. 11. 21. 13:56
๋ฐ˜์‘ํ˜•
๋ฐ˜์‘ํ˜•

๐Ÿ’ฅController๋ž€?

SPRING MVC ๊ตฌ์กฐ์—์„œ C๋ฅผ ๋งก๊ณ  ์žˆ๋Š” Controller๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์š”์ฒญ์„ ์ง์ ‘์ ์œผ๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ์—”๋“œํฌ์ธํŠธ(Endpoint)๋กœ์จ Model๊ณผ View์˜ ์ค‘๊ฐ„์—์„œ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ ์ธก์˜ ์š”์ฒญ์„ ์ „๋‹ฌ๋ฐ›์•„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฑฐ์นœ ํ›„, Model ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด, ์ด Model ๋ฐ์ดํ„ฐ๋ฅผ View๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

 

๐Ÿ’ฅapi์ฃผ์†Œ๋ž€?

 

  API๋Š” Application Programming Interface์˜ ์•ฝ์ž๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก, ์šด์˜์ฒด์ œ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋œปํ•œ๋‹ค.

์›น์—์„œ๋Š”
์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์ด๋‹ค. HTTP ์„œ๋น„์Šค์ด๊ณ  ๋‹ค์–‘ํ•œ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ๋‹ค. Web ํ™˜๊ฒฝ์„ ํ†ตํ•ด ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐ CRUD์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

 

๐Ÿ’ฅPOSTMAN ์‚ฌ์šฉ

ํฌ์ŠคํŠธ๋งจ์€ API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ธ๊ธฐ์žˆ๋Š” ํ˜‘์—… ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ฑด ๋ฐ‘ ๋ธ”๋กœ๊ทธ์— ๊ฐ€์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

https://parkjh7764.tistory.com/212

 

[POSTMAN] ํฌ์ŠคํŠธ๋งจ ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ• / POSTMAN request ์š”์ฒญํ•ด๋ณด๊ธฐ

Contents ํฌ์ŠคํŠธ๋งจ(POSTMAN)์ด๋ž€? POSTMAN์€ API ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์ธ๊ธฐ์žˆ๋Š” ํ˜‘์—… ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์›น ๊ธฐ๋ฐ˜์œผ๋กœ ์ œ๊ณต๋˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๋“ค์ด API๋ฅผ ๋””์ž์ธํ•˜๊ณ  ๋ฌธ์„œํ™”ํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค

parkjh7764.tistory.com

 


๐Ÿ’ฅ ์‹ค์Šต

 

 

 

demo ๋ฐ‘์—๋‹ค๊ฐ€ Package๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์‹œ๊ณ  package ์ด๋ฆ„์€ controller๋กœ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

 

 

 

 

 

 

 controller ๋ฐ‘์— HelloController๋ผ๋Š” Java Class๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

 

 

 

์ด ๋•Œ ์ž๋ฐ” ๋ช…๋ช… ๊ทœ์น™์— ๋”ฐ๋ผ ํŒจํ‚ค์ง€(ํด๋”) ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ  Class๋Š” ๋Œ€๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋„๋ก ์ด๋ฆ„์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

 

์ปจํŠธ๋กค๋Ÿฌ์—๋Š” @RestController์™€ @Controller๊ฐ€ ์žˆ๋‹ค.

 


@Controller vs @RestController

@Controller๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์ด String์ผ ๋•Œ ๋ทฐ ์ด๋ฆ„์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ๋ทฐ๋ฅผ ์ฐพ๊ณ  ๋ทฐ๊ฐ€ ๋žœ๋”๋ง๋œ๋‹ค.
๋ฐ˜๋ฉด, @RestController๋Š” ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ๋ทฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, HTTP ๋ฉ”์‹œ์ง€ ๋ฐ”๋””์— ๋ฐ”๋กœ ์ž…๋ ฅ๋˜์–ด ๋ฐ˜ํ™˜๋œ ๋ฌธ์ž์—ด์„ ๊ทธ๋Œ€๋กœ ๋…ธ์ถœ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 *Controller

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
    @RequestMapping("/hello")
    public String hi(){
        return "hello.html";
    }
}

 

์ด๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ resource์— static์ด๋ž€ ํŒŒ์ผ ๋ฐ‘์—  hello.html์ด๋ผ๋Š” ํŒŒ์ผ์ด ์žˆ์–ด์•ผํ•˜๋Š”๋ฐ

์ปจํŠธ๋กค๋Ÿฌ๋Š” static์ด๋ž€ ํŒŒ์ผ ๋ฐ‘์— return ๊ฐ’์„ ๋žœ๋”๋ง ํ•œ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉด /hello๋ž€ ๊ณณ์— ๋“ค์–ด๊ฐ”์„ ๋•Œ hello.html์ด ๋‚˜์˜จ๋‹ค.

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  helloController๋กœ ๋“ค์–ด์˜จ ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.
</body>
</html>

*RestController

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

@RestController
public class HelloRestController {
    @RequestMapping("/hi")
    public String hi(){
        return "hi RestController๋กœ ๋“ค์–ด์˜จ ํŽ˜์ด์ง€ ์ž…๋‹ˆ๋‹ค.";
    }
}

 


๐Ÿ’ฅ๊ฒฐ๊ณผ ํ™•์ธ (POSTMAN)

 * Controller

 


 

*RestController

 

 


 

๐Ÿ’ฅ๊ฒฐ๊ณผ ํ™•์ธ (WEB)

*Controller

Controller


*RestController

RestController

 

๋ฐ˜์‘ํ˜•