๐ @Controller
: Client์ Request๋ฅผ ์ฒ๋ฆฌํ ํ โ ์ ํด์ง View์ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ค
Client์ Request๊ฐ ์ง์ ํ๋ ์์ (entry point)
Request
์ ๋ฐ๋ผ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ ์ง ๊ฒฐ์ โ ์ค์ง์ ์ฒ๋ฆฌ๋ @Service
์ ๋๊ฒจ์ ์ฒ๋ฆฌํจ
์ฌ์ฉ์์๊ฒ View(or View์ Model์ ์ ์ฉํ ๊ฒ) โ Response๋ก ๋ณด๋ด์ค
๋๊ท๋ชจ์๋น์ค์์ ํ๋์ ํด๋์ค๊ฐ ๋ชฐ์์ ์ฒ๋ฆฌํ๋ ๊ฒ โ๏ธ
Controller๋ผ๋ ์ค๊ฐ์ ์ด์ ์ญํ โ A ์์ฒญ์ A Controller๊ฐ ๋งก์ ๋ก์ง์ ์ฒ๋ฆฌํ๊ฒ ํจ โญ๏ธ
MVC ํจํด (Model - View - Controller) ์ค์ โ
๐ Client์ Get Request์ ๋ํด ์ฒ๋ฆฌ ํ, View๋ฅผ ๋ฐํํ๊ธฐ ์ํด ์ฌ์ฉํจ
@Controller
public class ControllerPrac {
@GetMapping("/home") // home path๋ก Get ์์ฒญ์ด ๋ค์ด์ค๋ฉด
public String homepage() {
return "home.html"; // home.html ์์ฑ (Response)
}
}
๐ @ResponseBody
: ํด๋น ๋ฉ์๋์ return ๊ฐ โ HTTP response Body์ ๋ฃ์ด ๋ฐํํจ
โก๏ธ Controller๋ Client โ View
, Model
๋ณ๋๋ก ๋ฐํํจ
์ข ๋ฅ | ์๋ฏธ |
---|---|
View | ๋์ ์ธ HTML |
Model | View์ ์ ์ฉํ ์ ๋ณด |
๋ฐฑ์๋๋ง ๋ฐ๋ก ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ, View๋ฅผ Client(ํ๋ก ํธ)์ชฝ์ผ๋ก ๋ณด๋ผํ์ โ
โก๏ธ '๋ฐ์ดํฐ๋ง' Client์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ณด๋ด์ฃผ๋ฉด ๋จ
โ Response Body์ Controller์์ ๋ฐํํ๋ ๊ฐ์ฒด โ JSON ํํ๋ก ๋ค์ด๊ฐ
โก๏ธ View ๋์ , JSON ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํจ
โก Client์์ JSON ํํ๋ก ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉ
๐ JSON์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์์ ์ ์ธ
@RestController
public class ProductRestController {
private final ProductService productService;
private final ProductRepository productRepository;
// ๋ฑ๋ก๋ ์ ์ฒด ์ํ ๋ชฉ๋ก ์กฐํ
@GetMapping("/api/products")
public List<Product> getProducts() {
return productRepository.findAll();
}
}
๐ @RestController
: @Controller + @ResponseBody
View ๋์ JSON ํํ์ ๋ฐ์ดํฐ๋ฅผ Client(ํ๋ก ํธ)์ ๋ฐํํจ
๋ฐ์ดํฐ ์์ฒด๋ฅผ ์๋ต์ผ๋ก ์ ๊ณตํ๋ RESTful API ๊ฐ๋ฐ ์ ์์ฃผ ์ฌ์ฉ๋จ
์ฆ, ๋ฐ์ดํฐ(JSON)๋ง ๋ฐํํ๋ฉด ๋๋ Controller โ @RestController
์ฌ์ฉ
์ ๋ง ์ ์ตํ ๊ธ์ด์์ต๋๋ค.