- Controller의 책임 : HTTP 요청 검증과 전처리
컨트롤러 계층은 웹 애플리케이션에서 들어오는 요청의 진입점이며 이러한 요청을 처리하는 특정 역할을 합니다.
Service 계층과의 차이점
- 컨트롤러 레이어
- HTTP 요청 및 응답을 처리하고, 요청을 검증하고, 비즈니스 로직을 서비스 레이어에 위임합니다.
- 서비스 계층
- 비즈니스 로직을 포함하고 데이터 검색 및 저장을 위해 저장소 계층과 상호 작용하며 트랜잭션을 관리할 수 있습니다.
컨트롤러 계층은 비즈니스 규칙이나 데이터 스토리지와 관련이 없는 반면 서비스 계층은 HTTP 프로토콜 세부 정보를 처리하지 않습니다
1단계: 요청 받기
컨트롤러 계층은 클라이언트로부터 들어오는 HTTP 요청을 받습니다.
이러한 요청을 적절한 처리기 메서드로 라우팅하는 일을 담당합니다.
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/user")
public ResponseEntity<User> createUser(@RequestBody User user) {
return ResponseEntity.ok(userService.createUser(user));
}
}
2단계: 유효성 검사
컨트롤러가 요청의 유효성을 검사합니다.
이 유효성 검사는 간단하고 요청 구조와 관련될 수 있습니다.
예를 들어 요청 본문에 필수 필드가 있는지 또는 쿼리 매개변수가 예상 형식인지 확인합니다.
비즈니스 규칙 유효성 검사와 같은 보다 복잡한 유효성 검사의 경우 일반적으로 서비스 계층에서 처리됩니다.
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {…}
3단계: 서비스 계층에 위임
컨트롤러에는 비즈니스 로직이 포함되어 있지 않으며 해당 책임을 서비스 계층에 위임합니다.
적절한 서비스 메서드를 호출하여 요청에서 필요한 데이터를 전달합니다.
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
return ResponseEntity.ok(userService.createUser(user));
}
4단계: 클라이언트에 응답
서비스 계층이 작업을 완료하면 컨트롤러는 결과를 가져와 클라이언트로 다시 보낼 적절한 HTTP 응답을 구성합니다
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
User createdUser = userService.createUser(user);
return ResponseEntity.status(HttpStatus.CREATED).body(createdUser);
}
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
728x90
'DEV > Java' 카테고리의 다른 글
ACID (0) | 2023.07.18 |
---|---|
Service의 책임 (0) | 2023.07.18 |
Custom Exception (0) | 2023.07.18 |
Body에 상태 코드를 넣는 이유 (0) | 2023.07.18 |
요청 DTO에 정규 표현식 적용하는 방법 (0) | 2023.07.18 |