📖 Scenario: You are creating a simple NestJS application that can run both as a REST API server and as a GraphQL server. This hybrid setup allows your app to serve different types of clients easily.
🎯 Goal: Build a NestJS hybrid application that sets up both REST and GraphQL modules and starts the server with both capabilities.
📋 What You'll Learn
Create a NestJS application instance
Configure a REST controller
Configure a GraphQL module
Use the app.select() method to create a hybrid app
Start the application listening on port 3000
💡 Why This Matters
🌍 Real World
Hybrid applications let you serve different client needs from one backend, like mobile apps using REST and web apps using GraphQL.
💼 Career
Understanding hybrid apps with NestJS is useful for backend developers building flexible APIs that support multiple protocols.
Progress0 / 4 steps
1
Create the NestJS application instance
Write code to create a NestJS application instance called app using NestFactory.create(AppModule).
NestJS
Hint
Use NestFactory.create(AppModule) to create the app instance.
2
Add a configuration variable for the port
Add a constant variable called port and set it to 3000.
NestJS
Hint
Use const port = 3000; inside the bootstrap function.
3
Create the hybrid application with REST and GraphQL modules
Use app.select() to select AppModule and create a hybrid app instance called hybridApp.
NestJS
Hint
Use const hybridApp = app.select(AppModule); to create the hybrid app.
4
Start the hybrid application listening on the port
Call hybridApp.listen(port) to start the server on port 3000.
NestJS
Hint
Use await hybridApp.listen(port); to start the server.
Practice
(1/5)
1. What is a hybrid application in NestJS?
easy
A. An app that combines HTTP and microservices in one project
B. An app that only uses HTTP controllers
C. An app that only uses microservices
D. An app that runs on multiple servers
Solution
Step 1: Understand NestJS application types
NestJS apps can be HTTP-based, microservice-based, or both combined.
Step 2: Define hybrid application
A hybrid app combines HTTP and microservices in one project to handle both communication types.
Final Answer:
An app that combines HTTP and microservices in one project -> Option A
Quick Check:
Hybrid app = HTTP + microservices [OK]
Hint: Hybrid means mixing HTTP and microservices in one app [OK]
Common Mistakes:
Thinking hybrid means multiple servers
Confusing hybrid with only HTTP or only microservices
Assuming hybrid apps are separate projects
2. Which method is used to add microservice support in a NestJS hybrid application?
B. connectMicroservice() does not accept transport option
C. startAllMicroservices() must be called before app.listen()
D. Missing await before connectMicroservice()
Solution
Step 1: Check method call order
In NestJS, microservices must be started before the HTTP server listens, so startAllMicroservices() should be before app.listen().
Step 2: Validate other options
connectMicroservice() accepts transport option; AppModule supports microservices; connectMicroservice() is synchronous, no await needed.
Final Answer:
startAllMicroservices() must be called before app.listen() -> Option C
Quick Check:
Start microservices before HTTP listen [OK]
Hint: Call startAllMicroservices() before app.listen() [OK]
Common Mistakes:
Calling startAllMicroservices() after app.listen()
Adding await to connectMicroservice()
Thinking transport option is invalid
5. You want to build a NestJS hybrid app that handles HTTP requests and listens to RabbitMQ messages. Which steps correctly set up the microservice part?
hard
A. Use connectMicroservice({ transport: Transport.TCP }) and call startAllMicroservices() after app.listen()
B. Use createMicroservice({ transport: Transport.RMQ }) and call app.listen() before starting microservices
C. Add RabbitMQ config in AppModule imports and call app.listen() only
D. Use connectMicroservice({ transport: Transport.RMQ, options: { urls: ['amqp://localhost'], queue: 'main_queue' } }), then call startAllMicroservices() before app.listen()
Solution
Step 1: Choose correct microservice setup for RabbitMQ
connectMicroservice() with Transport.RMQ and proper options (urls, queue) is the correct way to add RabbitMQ microservice.
Step 2: Call startAllMicroservices() before app.listen()
Microservices must start before HTTP server listens to ensure both run properly.
Final Answer:
Use connectMicroservice({ transport: Transport.RMQ, options: { urls: ['amqp://localhost'], queue: 'main_queue' } }), then call startAllMicroservices() before app.listen() -> Option D
Quick Check:
connectMicroservice + RMQ options + startAllMicroservices before listen [OK]
Hint: Set RMQ options in connectMicroservice and start microservices first [OK]
Common Mistakes:
Using createMicroservice() which is not a NestFactory method
Calling app.listen() before starting microservices
Using wrong transport type for RabbitMQ
Not providing RabbitMQ connection options
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.