[5] 클라이언트의 요청을 처리하는 Controller

안상철·2022년 8월 16일
0

Kotlin Spring Boot

목록 보기
6/14
post-thumbnail

이전 페이지에서 Service ~ Repository까지 DB에 있는 데이터를 불러와 조작하는 방법을 소개했습니다.

이 페이지에서는 클라이언트로부터 요청을 받아 우리가 작성 한 비즈니스 로직을 수행하고, 다시 클라이언트에게 무언가의 결과를 전달 해 주는 컨트롤러에 대해 알아보겠습니다. 먼저 Http 요청 메서드를 알아봅시다.

1. http 메소드와 상태코드

2. RequestMapping

우린 주요 메소드 5가지를 RequestMapping 어노테이션을 통해 컨트롤러 클래스에 작성 합니다.

RequsetMapping이란 REST API 서버통신을 하기 위해 URL로 클라이언트의 요청을 받고 컨트롤러 ~ 메서드 까지 매핑하기 위해 필요합니다.

@GetMapping("/member") public String helloGet(...) { ... }
@PostMapping() public String helloPost(...) { ... }
@PatchMapping() public String helloPatch(...) { ... }
@PutMapping() public String helloPut(...) { ... }
@DeleteMapping() public String helloDelete(...) { ... }

이렇게 주요 Http 메서드 5가지를 어노테이션으로 작성 할 수 있습니다.

3. Controller 예제

@Tag(name = "사용자 API")
@RequestMapping("/api/user")
@RestController
class SignController(

    private val memberCommandService: MemberCommandService,

) {
    @Operation(summary = "회원가입")
    @PostMapping("/sign-up")
    fun createMember(@RequestBody signUpIn: SignUpIn): ResponseEntity<SignUpOut> {
        val memberOut = memberCommandService.createMember(signUpIn)
        return ResponseEntity.ok(memberOut)
    }
}

tag는 Swagger에서 제공하는 어노테이션입니다. 이 컨트롤러 클래스의 설명을 추가 합니다.

컨트롤러 클래스 자체에 붙어있는 RequsetMapping 어노테이션은 이 컨트롤러의 모든 API 접두사를 의미합니다. 따라서 아래 회원가입 API는 사실 “/api/user/sign-up“이 되는 것입니다.

RestController 어노테이션은 Controller 어노테이션과 ResponseBody 어노테이션이 조합된 어노테이션 입니다. Controller 어노테이션과 달리 View를 리턴하지 않고 단순히 객체만을 JSON 혹은 HTTP응답에 담아서 전송합니다.

컨트롤러 클래스를 엔터티 혹은 원하는 단위로 생성하고 API별 메서드를 작성 해 줍니다.

ReqestMapping 어노테이션 하위에 작성 한 메서드는 클라이언트의 요청을 받아 메서드 내 작성 한 Service와 연결하고 조작된 값 혹은 기타 응답을 다시 클라이언트에게 반환 해 줍니다. 이처럼 컨트롤러는 주요 로직은 작성하지 않고 서비스와의 연결만 해 줍니다.

연결된 서비스가 동작하는 방법을 살펴보려면 아래 페이지를 참고 해 주세요.

[2] Domain - 엔티티 작성과 RepositoryCustom
[3] 조회를 담당하는 Query Service
[4] CUD를 담당하는 Command Service

profile
웹 개발자(FE / BE) anna입니다.

0개의 댓글