Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Moving Logic from Controller to Service | Services and Architecture
Building Backend Applications with Nest.js

bookMoving Logic from Controller to Service

Swipe um das Menü anzuzeigen

At first, it is common to place logic directly inside a controller. This works for simple cases, but quickly becomes hard to manage as the application grows.

Here is an example of logic inside a controller:

@Controller('users')
export class UsersController {
  @Get()
  getUsers() {
    return ['Alice', 'Bob'];
  }
}

This approach mixes request handling and business logic in one place.

To improve this, move the logic into a service.

Create a service:

import { Injectable } from '@nestjs/common';

@Injectable()
export class UsersService {
  getUsers() {
    return ['Alice', 'Bob'];
  }
}

Now update the controller:

import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(private usersService: UsersService) {}

  @Get()
  getUsers() {
    return this.usersService.getUsers();
  }
}

Here is what changed:

  • The controller no longer contains data or logic;
  • The service handles all processing;
  • The controller only calls the service and returns the result.

This separation makes your code easier to read, test, and extend.

question mark

Why should logic be moved from controllers to services?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 3
some-alt