Bird
Raised Fist0
Firebasecloud~20 mins

HTTP trigger functions in Firebase - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Firebase HTTP Trigger Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output of this Firebase HTTP trigger function?

Consider this Firebase HTTP trigger function code snippet:

exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send('Hello from Firebase!');
});

What will the client receive when making a GET request to this function?

Firebase
exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send('Hello from Firebase!');
});
AThe client receives an error because the function does not return a promise.
BThe client receives a JSON object {message: 'Hello from Firebase!'} as the response body.
CThe client receives an empty response with status 200.
DThe client receives the string 'Hello from Firebase!' as the response body.
Attempts:
2 left
💡 Hint

Look at what the response.send() method sends back.

📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this Firebase HTTP trigger function

Which option contains the correct syntax for defining a Firebase HTTP trigger function?

Firebase
exports.myFunction = functions.https.onRequest((req, res) => {
  res.send('Hi');
});
A
exports.myFunction = functions.https.onRequest((req, res) => {
  res.send('Hi')
});
B
exports.myFunction = functions.https.onRequest((req, res) => {
  res.send('Hi');
});
C
exports.myFunction = functions.https.onRequest(req, res) => {
  res.send('Hi');
};
D
exports.myFunction = functions.https.onRequest = (req, res) => {
  res.send('Hi');
};
Attempts:
2 left
💡 Hint

Check the arrow function syntax and parentheses.

❓ optimization
advanced
2:00remaining
Which option optimizes response time for a Firebase HTTP trigger function?

You want your Firebase HTTP trigger function to respond quickly without waiting for asynchronous tasks. Which option achieves this?

Firebase
exports.fastResponse = functions.https.onRequest(async (req, res) => {
  // Some async task
  await someAsyncTask();
  res.send('Done');
});
ARemove <code>await</code> and call <code>someAsyncTask()</code> without waiting, then send response immediately.
BUse <code>setTimeout</code> to delay the response by 2 seconds.
CKeep <code>await</code> so the function waits for the async task before responding.
DReturn a promise that never resolves to keep the function alive.
Attempts:
2 left
💡 Hint

Think about sending the response without waiting for the async task.

🧠 Conceptual
advanced
2:00remaining
What happens if a Firebase HTTP trigger function does not send a response?

If a Firebase HTTP trigger function does not call response.send() or similar methods, what will happen?

AThe function logs an error but sends a 200 OK response.
BFirebase automatically sends a default success response.
CThe client request will hang until timeout because no response is sent.
DThe function throws a syntax error immediately.
Attempts:
2 left
💡 Hint

Think about what happens when a server never replies to a request.

🔧 Debug
expert
2:00remaining
Why does this Firebase HTTP trigger function cause a timeout error?

Examine this function:

exports.timeoutFunc = functions.https.onRequest((req, res) => {
  someAsyncOperation();
  // Missing response.send or end
});

Why does this cause a timeout error?

ABecause the function never sends a response, the client waits indefinitely until timeout.
BBecause <code>someAsyncOperation()</code> is not awaited, it causes a syntax error.
CBecause <code>response.send()</code> is called twice causing a conflict.
DBecause the function returns a promise that rejects immediately.
Attempts:
2 left
💡 Hint

Check if the function sends any response back to the client.

Practice

(1/5)
1. What does an HTTP trigger function in Firebase do?
easy
A. Automatically updates the database without user input
B. Runs code when a specific web URL is visited
C. Sends emails to users without any request
D. Creates a new Firebase project

Solution

  1. Step 1: Understand HTTP trigger functions

    HTTP trigger functions run when someone visits a specific web address (URL).
  2. Step 2: Compare options with this behavior

    Only Runs code when a specific web URL is visited describes running code on visiting a URL, matching the definition.
  3. Final Answer:

    Runs code when a specific web URL is visited -> Option B
  4. Quick Check:

    HTTP trigger = run code on URL visit [OK]
Hint: HTTP trigger = runs code on web URL visit [OK]
Common Mistakes:
  • Confusing HTTP triggers with database triggers
  • Thinking HTTP triggers run automatically without requests
  • Assuming HTTP triggers send emails by default
2. Which of the following is the correct way to define an HTTP trigger function in Firebase using Node.js?
easy
A. exports.myFunc = functions.storage.object().onFinalize((object) => { });
B. exports.myFunc = functions.database.onWrite((change, context) => { });
C. exports.myFunc = functions.https.onRequest((req, res) => { res.send('Hello'); });
D. exports.myFunc = functions.auth.user().onCreate((user) => { });

Solution

  1. Step 1: Identify HTTP trigger syntax

    HTTP triggers use functions.https.onRequest with (req, res) parameters.
  2. Step 2: Match options to this syntax

    Only exports.myFunc = functions.https.onRequest((req, res) => { res.send('Hello'); }); uses functions.https.onRequest correctly; others are for database, auth, or storage triggers.
  3. Final Answer:

    exports.myFunc = functions.https.onRequest((req, res) => { res.send('Hello'); }); -> Option C
  4. Quick Check:

    HTTP trigger uses functions.https.onRequest [OK]
Hint: HTTP triggers use functions.https.onRequest syntax [OK]
Common Mistakes:
  • Using database or auth triggers instead of HTTP triggers
  • Missing (req, res) parameters in function
  • Confusing storage triggers with HTTP triggers
3. What will be the output when visiting the URL of this Firebase HTTP function?
exports.greet = functions.https.onRequest((req, res) => { const name = req.query.name || 'Guest'; res.send(`Hello, ${name}!`); });

URL visited: https://us-central1-project.cloudfunctions.net/greet?name=Alice
medium
A. Hello, Alice!
B. Hello, Guest!
C. Hello, undefined!
D. Error: name not found

Solution

  1. Step 1: Understand query parameter usage

    The function reads the 'name' from the URL query string; if missing, it uses 'Guest'.
  2. Step 2: Check the URL query

    The URL has '?name=Alice', so name = 'Alice'. The response is 'Hello, Alice!'.
  3. Final Answer:

    Hello, Alice! -> Option A
  4. Quick Check:

    Query name=Alice -> Hello, Alice! [OK]
Hint: Query params fill variables; missing uses default [OK]
Common Mistakes:
  • Ignoring query parameters and using default always
  • Assuming undefined if parameter missing
  • Expecting error instead of default value
4. Identify the error in this Firebase HTTP trigger function:
exports.testFunc = functions.https.onRequest((request, response) => { response.send('Test'); response.send('Done'); });
medium
A. Incorrect parameter names for the function
B. Missing return statement after response.send()
C. No error, function works fine
D. Calling response.send() twice causes an error

Solution

  1. Step 1: Check response.send() usage

    response.send() ends the HTTP response. Calling it twice causes an error.
  2. Step 2: Analyze the code flow

    The function calls response.send('Test') then immediately calls response.send('Done'), which is invalid.
  3. Final Answer:

    Calling response.send() twice causes an error -> Option D
  4. Quick Check:

    Only one response.send() allowed per request [OK]
Hint: Use response.send() only once per HTTP request [OK]
Common Mistakes:
  • Calling response.send() multiple times
  • Thinking parameter names must be req, res exactly
  • Ignoring that response ends after send
5. You want to create an HTTP trigger function that accepts a JSON body with a field age and responds with {"canVote": true} if age is 18 or more, otherwise {"canVote": false}. Which code snippet correctly implements this?
hard
A. exports.checkVote = functions.https.onRequest((req, res) => { const age = req.body.age; if(age >= 18) { res.json({canVote: true}); } else { res.json({canVote: false}); } });
B. exports.checkVote = functions.https.onRequest((req, res) => { const age = req.query.age; if(age > 18) { res.send({canVote: true}); } else { res.send({canVote: false}); } });
C. exports.checkVote = functions.https.onRequest((req, res) => { const age = req.body.age; if(age > 18) { res.send('{"canVote": true}'); } else { res.send('{"canVote": false}'); } });
D. exports.checkVote = functions.https.onRequest((req, res) => { const age = req.body.age; if(age > 18) { res.send({canVote: true}); } else { res.send({canVote: false}); } });

Solution

  1. Step 1: Identify correct data source and response method

    The age is sent in JSON body, so use req.body.age. To send JSON response, use res.json().
  2. Step 2: Check conditions and response format

    exports.checkVote = functions.https.onRequest((req, res) => { const age = req.body.age; if(age >= 18) { res.json({canVote: true}); } else { res.json({canVote: false}); } }); correctly checks age >= 18 and sends JSON object with canVote true or false using res.json().
  3. Final Answer:

    exports.checkVote = functions.https.onRequest((req, res) => { const age = req.body.age; if(age >= 18) { res.json({canVote: true}); } else { res.json({canVote: false}); } }); -> Option A
  4. Quick Check:

    Use req.body and res.json() for JSON input/output [OK]
Hint: Use req.body for JSON input and res.json() to respond [OK]
Common Mistakes:
  • Using req.query instead of req.body for JSON data
  • Sending JSON as string instead of object
  • Using res.send() with object without res.json()
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