A controller in NestJS handles incoming HTTP requests and returns responses. It acts like a receptionist who listens to requests and directs them to the right place.
Click to reveal answer
beginner
Why do controllers handle incoming requests instead of services?
Controllers focus on receiving and managing requests, while services handle business logic. This separation keeps code organized and easier to maintain.
Click to reveal answer
intermediate
How does a controller know which requests to handle?
Controllers use decorators like @Get(), @Post() to match specific HTTP methods and routes. This is like setting up signs to guide requests to the right handler.
Click to reveal answer
beginner
What happens inside a controller when a request arrives?
The controller receives the request, extracts needed data, calls the service for processing, and sends back the response to the client.
Click to reveal answer
beginner
Why is it important for controllers to handle requests in a web app?
Controllers act as the first contact point for users. They ensure requests are understood and routed correctly, making the app responsive and organized.
Click to reveal answer
In NestJS, what decorator is used to define a controller method that handles GET requests?
A@Injectable()
B@Get()
C@Controller()
D@Post()
✗ Incorrect
The @Get() decorator marks a method to handle HTTP GET requests.
Which part of a NestJS app is responsible for business logic?
AService
BModule
CController
DMiddleware
✗ Incorrect
Services contain business logic, while controllers handle requests.
What does a controller do after receiving a request?
ACall a service to process data
BDirectly access the database
CSend the request to the client
DIgnore the request
✗ Incorrect
Controllers call services to process data and then send a response.
Why is separating controllers and services useful?
AIt makes the app slower
BIt prevents any requests
CIt removes the need for modules
DIt helps organize code and responsibilities
✗ Incorrect
Separation keeps code clean and easier to manage.
Which decorator defines a class as a controller in NestJS?
A@Module()
B@Injectable()
C@Controller()
D@Service()
✗ Incorrect
The @Controller() decorator marks a class as a controller.
Explain why controllers handle incoming requests in NestJS and how they interact with services.
Think of controllers as the app's receptionist.
You got /5 concepts.
Describe the benefits of separating request handling in controllers from business logic in services.
Consider how teamwork works best when roles are clear.
You got /5 concepts.
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
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.
Step 2: Differentiate responsibilities
Controllers focus on routing and connecting requests to services, not on data storage or UI rendering.
Final Answer:
Because they organize routes and connect requests to the right code -> Option D
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
Step 1: Recognize NestJS controller method syntax
In NestJS, @Get() decorator marks a method to handle GET requests inside a controller class.
Step 2: Compare options
@Get() async handleRequest() { return 'Hello'; } uses @Get() decorator correctly; others use incorrect syntax or patterns from other frameworks.
Final Answer:
@Get() async handleRequest() { return 'Hello'; } -> Option C
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'?
The controller is set to 'greet' and the method handles GET requests at the root of this path, so the full route is '/greet'.
Step 2: Check the method return value
The sayHello() method returns the string 'Hello, NestJS!'. This string will be sent as the response body.
Final Answer:
'Hello, NestJS!' -> Option B
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
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().
Step 2: Check the method signature
The createUser() method has no parameters, so it cannot access the incoming data, which is a common mistake.
Final Answer:
The method lacks a parameter to receive the request body -> Option A
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
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.
Step 2: Identify the correct pattern
Injecting a service into the controller and calling its methods inside controller handlers follows this best practice.
Final Answer:
Inject a service into the controller and call its methods inside controller handlers -> Option A
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 unknownstrongwhile earning +1 Grip toward your certificate.