개념을 잡아가면서 블로그 프로젝트 V1을 완성했고,
V2를 만들어 코드를 좀 더 깔끔하게 리팩토링 해보자.
그러기 위해서 새롭게 카테고리화했다.
1. util이라는 폴더가 생겼다.
여러 곳에서 재사용되는 공통 메서드는
util 폴더 아래 만들어줄 것이다.
2. web 아래 api 폴더를 만들어
api 전용 컨트롤러를 만들어준다.
V1에서는 컨트롤러 안에 파일을 리턴해주는 메서드와
@ResponseBody를 붙여 데이터를 리턴해주는 메서드를 같이 만들어두었다.
우리는 서버를 만들 때 브라우저가 요청한다는 가정 하에 만들었다.
하지만 컨트롤러로 요청하는 프론트엔드 프로그램은 종류가 너무나도 다양하다.
스윙(자바), 안드로이드 어플(자바), 포스트맨, 브라우저 등등
안드로이드 어플로 예를 들면
핸드폰 어플에서 어차피 자바로 그림을 그리기 때문에
컨트롤러에서 html 파일을 리턴 받을 필요가 전혀 없다.
즉, 데이터만 받으면 되는 것이다.
만약 서버를 웹 전용으로 만들면
어플이나 다른 프로그램을 위한 서버를 여러 개 만들어야 한다.
그러므로 통일시켜야 한다.
PostController와 UserController는 브라우저 전용이다.
=> html 페이지(파일)를 리턴하는 컨트롤러(@Controller)이다.
package site.metacoding.blogv2.web;
import org.springframework.stereotype.Controller;
import lombok.RequiredArgsConstructor;
import site.metacoding.blogv2.service.PostService;
@RequiredArgsConstructor
@Controller
public class PostController {
private final PostService postService;
}
package site.metacoding.blogv2.web;
import org.springframework.stereotype.Controller;
import lombok.RequiredArgsConstructor;
import site.metacoding.blogv2.service.UserService;
@RequiredArgsConstructor
@Controller
public class UserController {
private final UserService userService;
}
PostApiController와 UserApiController
=> Json 데이터를 리턴하는 요청 전용 컨트롤러(@RestController)이다.
package site.metacoding.blogv2.web.api;
import org.springframework.web.bind.annotation.RestController;
import lombok.RequiredArgsConstructor;
import site.metacoding.blogv2.service.PostService;
@RequiredArgsConstructor
@RestController
public class PostApiController {
private final PostService postService;
}
package site.metacoding.blogv2.web.api;
import org.springframework.web.bind.annotation.RestController;
import lombok.RequiredArgsConstructor;
import site.metacoding.blogv2.service.UserService;
@RequiredArgsConstructor
@RestController
public class UserApiController {
private final UserService userService;
}
[출처]
https://cafe.naver.com/metacoding
메타 코딩 유튜브
https://www.youtube.com/c/%EB%A9%94%ED%83%80%EC%BD%94%EB%94%A9