NodeJS | Controller

bubblegum·2024년 2월 7일

NodeJS

목록 보기
9/14
post-thumbnail

컨트롤러의 정의

컨트롤러란 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. 일반적으로 MVC(Model-View-Controller) 아키텍처에서 사용됩니다. 여기서 컨트롤러는 모델과 뷰 간의 상호 작용을 조정하는 중간 계층입니다.

컨트롤러 함수는 클라이언트의 요청에 대한 응답을 처리하는 역할을 합니다. 일반적으로 미들웨어는 요청을 처리하기 전에 실행되는 함수이며, Express 애플리케이션에서 요청에 대한 사전 처리나 로깅 등을 담당합니다. 컨트롤러는 미들웨어와 달리, 요청에 대한 실제 작업을 수행하고 그 결과를 반환합니다. 각각의 역할과 책임은 다음과 같습니다.

컨트롤러와 미들웨어의 차이점

  1. 미들웨어 (Middleware):

    • 미들웨어는 Express 애플리케이션에서 요청과 응답 사이에 위치하여 요청을 처리하거나 수정하는 함수입니다.
    • 요청을 처리하기 전에 실행되거나 응답을 보내기 전에 실행될 수 있습니다.
    • 미들웨어는 보통 app.use() 메서드를 사용하여 등록되며, 전역적으로 또는 특정 경로에 대해 등록될 수 있습니다.
    • 예를 들어, 요청의 로그를 기록하거나 요청에 대한 인증 및 권한 부여를 처리하는 데 사용될 수 있습니다.
  2. 컨트롤러 (Controller):

    • 컨트롤러는 MVC 아키텍처에서 모델과 뷰 간의 상호 작용을 조정하는 중간 계층으로 사용됩니다.
    • 컨트롤러는 주로 라우팅 로직을 처리하고, 클라이언트의 요청을 받아 해당 요청에 대한 처리를 수행합니다.
    • 컨트롤러는 주로 특정 라우트 핸들러 함수로 정의되며, 이러한 함수들은 라우터에 등록됩니다.
    • 컨트롤러는 클라이언트로부터 요청을 받아 적절한 데이터를 모델에게 요청하고, 모델로부터 받은 데이터를 템플릿에 전달하여 클라이언트에 응답을 보내는 역할을 합니다.

미들웨어는 주로 요청의 전처리나 후처리 작업에 사용되며, 애플리케이션의 모든 요청에 적용될 수 있습니다. 반면에 컨트롤러는 특정 경로에 대한 요청을 처리하고 그에 따른 응답을 생성하는 데 사용됩니다. 따라서 미들웨어와 컨트롤러는 서로 다른 역할을 수행하며, 애플리케이션의 다른 부분에서 사용됩니다.

컨트롤러와 핸들러의 차이점

핸들러와 컨트롤러는 비슷한 역할을 수행하는 용어로 사용되기도 하지만, 일반적으로 다음과 같은 차이가 있습니다:

  1. 역할과 책임

    • 컨트롤러: MVC 아키텍처에서 모델과 뷰 간의 상호 작용을 조정하는 중간 계층으로 사용됩니다. 컨트롤러는 주로 클라이언트의 요청을 받아 해당 요청에 대한 비즈니스 로직을 처리하고 적절한 데이터를 모델에게 요청하여 처리 결과를 생성한 후, 이를 뷰에 전달하여 클라이언트에게 응답을 제공합니다.
    • 핸들러: 요청을 처리하고 적절한 응답을 반환하는 함수입니다. 이러한 핸들러는 일반적으로 Express.js에서 라우팅 경로에 대한 요청을 처리하고, 요청에 대한 적절한 응답을 생성하는 역할을 수행합니다. 핸들러는 컨트롤러의 일부로 사용될 수 있습니다.
  2. 사용되는 컨텍스트:

    • 컨트롤러: 일반적으로 MVC 아키텍처나 유사한 아키텍처에서 사용됩니다. 클라이언트의 요청을 받아 처리하고 그에 따른 응답을 생성하는데 사용됩니다.
    • 핸들러: 주로 Express.js와 같은 웹 프레임워크에서 사용됩니다. 요청에 대한 처리를 담당하는 함수로, 라우터에 연결되어 특정 경로에 대한 요청을 처리하고 적절한 응답을 반환합니다.
  3. 컨텍스트 종속성:

    • 컨트롤러: 일반적으로 웹 애플리케이션의 비즈니스 로직을 추상화하기 위해 사용됩니다. 컨트롤러는 뷰나 데이터베이스와 직접적으로 상호작용하지 않으며, 대신 모델에게 필요한 데이터를 요청하고 처리 결과를 반환합니다.
    • 핸들러: 웹 프레임워크에 종속적이며, 주로 HTTP 요청과 응답을 다루는데 사용됩니다. 예를 들어, Express.js의 핸들러는 특정 경로에 대한 요청을 처리하고 적절한 응답을 반환하기 위해 사용됩니다.

요약하자면, 컨트롤러는 MVC 아키텍처에서 비즈니스 로직을 처리하는데 사용되고, 핸들러는 주로 웹 프레임워크에서 특정 요청에 대한 처리를 담당하는데 사용됩니다.

컨트롤러 작동시키기

  1. 라우팅 설정: 먼저 Express 애플리케이션에서 요청 경로에 대한 라우팅을 설정해야 합니다. 이 라우팅 설정에서 특정 URL에 대한 요청이 들어왔을 때 어떤 컨트롤러 함수를 호출할지를 정의합니다.

  2. 컨트롤러 함수 정의: 해당 라우팅에 대한 요청이 들어왔을 때 실행될 컨트롤러 함수를 정의합니다. 이 함수는 요청 객체와 응답 객체를 매개변수로 받아서 요청을 처리하고 응답을 생성합니다.

  3. 라우터에 컨트롤러 함수 연결: 앞서 설정한 라우팅 경로에 대해 컨트롤러 함수를 연결합니다. 이것은 Express의 라우터 객체를 사용하여 수행됩니다. 예를 들어, router.get('/', controllerFunction)과 같이 사용될 수 있습니다.

  4. Express 애플리케이션에 라우터 등록: 설정한 라우터를 Express 애플리케이션에 등록합니다. 이것은 애플리케이션의 주요 파일에서 수행됩니다. 예를 들어, app.use('/api', router)와 같이 사용될 수 있습니다.

  5. Express 애플리케이션 실행: 마지막으로 Express 애플리케이션을 실행하여 서버를 시작합니다. 이제 설정된 라우팅에 따라 요청이 들어오면 컨트롤러 함수가 실행되어 요청을 처리하고 응답을 반환합니다.

profile
황세민

0개의 댓글