Bird
Raised Fist0
NestJSframework~10 mins

Why controllers handle incoming requests in NestJS - Test Your Understanding

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a controller that handles HTTP GET requests.

NestJS
import { Controller, [1] } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @[1]()
  findAll() {
    return 'This action returns all cats';
  }
}
Drag options to blanks, or click blank then click option'
APost
BPut
CGet
DDelete
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Post() instead of @Get() for GET requests
Forgetting to import the decorator
2fill in blank
medium

Complete the code to inject a service into the controller constructor.

NestJS
import { Controller } from '@nestjs/common';
import { CatsService } from './cats.service';

@Controller('cats')
export class CatsController {
  constructor(private readonly [1]: CatsService) {}
}
Drag options to blanks, or click blank then click option'
AcatsService
BCatsService
CserviceCats
Dcats
Attempts:
3 left
💡 Hint
Common Mistakes
Using the class name with uppercase as parameter name
Using unrelated variable names
3fill in blank
hard

Fix the error in the controller method to correctly handle a POST request with a body.

NestJS
import { Controller, Post, [1] } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Post()
  create(@[1]() createCatDto: any) {
    return 'This action adds a new cat';
  }
}
Drag options to blanks, or click blank then click option'
ABody
BParam
CQuery
DHeaders
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Param() to get body data
Forgetting to import the decorator
4fill in blank
hard

Fill both blanks to create a controller method that handles GET requests with a route parameter.

NestJS
import { Controller, Get, [1] } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get(':id')
  findOne(@[2]('id') id: string) {
    return `This action returns a cat with id ${id}`;
  }
}
Drag options to blanks, or click blank then click option'
AParam
BBody
CQuery
DHeaders
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Body() or @Query() for route parameters
Not importing Param decorator
5fill in blank
hard

Fill all three blanks to create a controller method that handles PATCH requests with a route parameter and body.

NestJS
import { Controller, Patch, [1], [2] } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Patch(':id')
  update(@[3]('id') id: string, @[2]() updateCatDto: any) {
    return `This action updates a cat with id ${id}`;
  }
}
Drag options to blanks, or click blank then click option'
AParam
BBody
CQuery
DHeaders
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up @Param() and @Body() decorators
Not importing both decorators

Practice

(1/5)
1. In NestJS, why do controllers handle incoming requests?
easy
A. Because they manage server hardware resources
B. Because they store data and manage databases
C. Because they handle user interface rendering
D. Because they organize routes and connect requests to the right code

Solution

  1. Step 1: Understand the role of controllers in NestJS

    Controllers are designed to listen for incoming HTTP requests and decide which code should handle them.
  2. Step 2: Differentiate responsibilities

    Controllers focus on routing and connecting requests to services, not on data storage or UI rendering.
  3. Final Answer:

    Because they organize routes and connect requests to the right code -> Option D
  4. Quick Check:

    Controllers handle routing = A [OK]
Hint: Controllers route requests to code, not store data [OK]
Common Mistakes:
  • Thinking controllers manage data storage
  • Confusing controllers with UI components
  • Assuming controllers handle hardware
2. Which of the following is the correct way to define a controller method to handle GET requests in NestJS?
easy
A. @Controller() get() { return 'Hello'; }
B. function get() { return 'Hello'; }
C. @Get() async handleRequest() { return 'Hello'; }
D. router.get('/hello', () => 'Hello');

Solution

  1. Step 1: Recognize NestJS controller method syntax

    In NestJS, @Get() decorator marks a method to handle GET requests inside a controller class.
  2. Step 2: Compare options

    @Get() async handleRequest() { return 'Hello'; } uses @Get() decorator correctly; others use incorrect syntax or patterns from other frameworks.
  3. Final Answer:

    @Get() async handleRequest() { return 'Hello'; } -> Option C
  4. Quick Check:

    @Get() decorator = C [OK]
Hint: Use @Get() decorator for GET routes in controllers [OK]
Common Mistakes:
  • Using plain functions outside controller classes
  • Confusing @Controller with method decorators
  • Using Express router syntax inside NestJS controllers
3. Given this NestJS controller code, what will be the output when a GET request is made to '/greet'?
@Controller('greet')
export class GreetController {
  @Get()
  sayHello() {
    return 'Hello, NestJS!';
  }
}
medium
A. 404 Not Found error
B. 'Hello, NestJS!'
C. An empty response
D. Server crash due to syntax error

Solution

  1. Step 1: Analyze the route path

    The controller is set to 'greet' and the method handles GET requests at the root of this path, so the full route is '/greet'.
  2. Step 2: Check the method return value

    The sayHello() method returns the string 'Hello, NestJS!'. This string will be sent as the response body.
  3. Final Answer:

    'Hello, NestJS!' -> Option B
  4. Quick Check:

    GET /greet returns method string = A [OK]
Hint: Controller path + method path = full route [OK]
Common Mistakes:
  • Expecting 404 due to missing route
  • Thinking method returns nothing
  • Assuming syntax errors without checking code
4. Identify the error in this NestJS controller code snippet:
@Controller('users')
export class UserController {
  @Post('/create')
  createUser() {
    // missing request body parameter
    return 'User created';
  }
}
medium
A. The method lacks a parameter to receive the request body
B. The @Post decorator is used incorrectly
C. The controller path should not be 'users'
D. The method should return a Promise, not a string

Solution

  1. Step 1: Review method parameters for POST requests

    POST requests usually send data in the request body, which the method should accept as a parameter decorated with @Body().
  2. Step 2: Check the method signature

    The createUser() method has no parameters, so it cannot access the incoming data, which is a common mistake.
  3. Final Answer:

    The method lacks a parameter to receive the request body -> Option A
  4. Quick Check:

    POST methods need @Body() parameter = B [OK]
Hint: POST handlers need @Body() to get data [OK]
Common Mistakes:
  • Ignoring request body in POST methods
  • Misusing decorators on methods
  • Thinking controller path causes error
5. You want to keep your NestJS controller focused only on routing and delegate business logic to a service. Which approach best follows this principle?
hard
A. Inject a service into the controller and call its methods inside controller handlers
B. Handle HTTP requests and business logic in the same controller method
C. Use controllers to directly access the database
D. Write all data processing inside the controller methods

Solution

  1. Step 1: Understand separation of concerns in NestJS

    Controllers should only handle routing and delegate business logic to services to keep code clean and maintainable.
  2. Step 2: Identify the correct pattern

    Injecting a service into the controller and calling its methods inside controller handlers follows this best practice.
  3. Final Answer:

    Inject a service into the controller and call its methods inside controller handlers -> Option A
  4. Quick Check:

    Controllers route, services handle logic = D [OK]
Hint: Use services for logic, controllers for routing [OK]
Common Mistakes:
  • Putting business logic inside controllers
  • Accessing database directly in controllers
  • Mixing routing and logic in one place
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard