Bird
Raised Fist0
Expressframework~3 mins

Why Status code conventions in Express? - Purpose & Use Cases

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
The Big Idea

Discover how a simple number can save hours of debugging and frustration!

The Scenario

Imagine building a web server that sends back responses without clear status codes. You have to guess if a request succeeded or failed just by reading the message text.

The Problem

Without standard status codes, clients get confused. They can't easily tell if a request worked or if there was an error. This leads to bugs, poor user experience, and hard-to-debug problems.

The Solution

Status code conventions give every response a clear, universal meaning. Clients and servers understand each other instantly, making communication smooth and reliable.

Before vs After
Before
res.send('User created successfully')
After
res.status(201).send('User created successfully')
What It Enables

Clear, consistent communication between servers and clients that improves reliability and user experience.

Real Life Example

When you submit a form online, the server sends a 200 status code if everything is fine or a 400 if you missed a required field, so your browser knows exactly what happened.

Key Takeaways

Status codes standardize server responses.

They help clients understand success or failure quickly.

Using them prevents confusion and bugs in web apps.

Practice

(1/5)
1. In Express, which status code is conventionally used to indicate a successful GET request?
easy
A. 301 Moved Permanently
B. 404 Not Found
C. 500 Internal Server Error
D. 200 OK

Solution

  1. Step 1: Understand HTTP status codes for success

    The status code 200 means the request was successful and the server returned the requested data.
  2. Step 2: Match the code to the GET request success

    For a successful GET request, 200 OK is the standard code to indicate success.
  3. Final Answer:

    200 OK -> Option D
  4. Quick Check:

    Success code for GET = 200 OK [OK]
Hint: 200 means success, use it for successful GET requests [OK]
Common Mistakes:
  • Using 404 for success
  • Using 500 for client errors
  • Confusing 301 with success
2. Which of the following is the correct way to set a 404 status code in Express?
easy
A. res.statusCode = 404; res.send('Not Found')
B. res.sendStatus(200)
C. res.status(404).send('Not Found')
D. res.code(404).send('Not Found')

Solution

  1. Step 1: Recall Express method to set status code

    Express uses res.status(code) to set the HTTP status code before sending a response.
  2. Step 2: Verify correct syntax for 404

    res.status(404).send('Not Found') correctly sets status 404 and sends the message.
  3. Final Answer:

    res.status(404).send('Not Found') -> Option C
  4. Quick Check:

    Use res.status(code) to set status [OK]
Hint: Use res.status(code) before send() to set status [OK]
Common Mistakes:
  • Using res.code() which doesn't exist
  • Setting res.statusCode directly without chaining
  • Using sendStatus(200) for 404
3. What status code will the following Express code send to the client?
app.get('/data', (req, res) => {
  res.status(201).send('Created');
});
medium
A. 201 Created
B. 404 Not Found
C. 200 OK
D. 500 Internal Server Error

Solution

  1. Step 1: Identify the status code set in the code

    The code uses res.status(201) which sets the HTTP status code to 201.
  2. Step 2: Understand the meaning of 201

    Status 201 means the request was successful and a new resource was created.
  3. Final Answer:

    201 Created -> Option A
  4. Quick Check:

    res.status(201) sends 201 Created [OK]
Hint: res.status(201) means resource created successfully [OK]
Common Mistakes:
  • Assuming default 200 status
  • Confusing 201 with 404
  • Ignoring the status() call
4. You wrote this Express code but clients always get status 200 instead of 400:
app.post('/submit', (req, res) => {
  if (!req.body.name) {
    res.status(400);
    res.send('Name is required');
  }
});

What is the main problem?
medium
A. res.send() must come before res.status()
B. res.status(400) must be followed by return to stop execution
C. 400 is not a valid status code
D. res.status() does not set the status code

Solution

  1. Step 1: Analyze the code flow after setting status 400

    res.status(400) sets the status but code continues to run after sending response.
  2. Step 2: Understand Express response behavior

    Without return, Express may continue and send default 200 later or cause errors.
  3. Final Answer:

    res.status(400) must be followed by return to stop execution -> Option B
  4. Quick Check:

    Use return after res.status().send() to stop further processing [OK]
Hint: Add return after res.status().send() to prevent default 200 [OK]
Common Mistakes:
  • Not returning after sending response
  • Calling res.send() before res.status()
  • Thinking 400 is invalid
5. You want to send a 204 No Content status after deleting a resource in Express. Which code snippet correctly does this?
hard
A. res.status(204).send()
B. res.sendStatus(204).send('Deleted')
C. res.status(204).send('Deleted')
D. res.send(204)

Solution

  1. Step 1: Understand 204 No Content meaning

    204 means success but no response body should be sent.
  2. Step 2: Choose code that sends 204 without content

    res.status(204).send() sends status 204 with empty body, which is correct.
  3. Step 3: Identify incorrect options

    res.sendStatus(204).send('Deleted') tries to chain send() after sendStatus(), which is invalid. res.status(204).send('Deleted') sends a body with 204, which breaks the rule. res.send(204) sends 204 as body, not status.
  4. Final Answer:

    res.status(204).send() -> Option A
  5. Quick Check:

    204 means no content, so send empty response [OK]
Hint: Use res.status(204).send() to send no content response [OK]
Common Mistakes:
  • Sending body with 204 status
  • Using sendStatus(204).send()
  • Sending status code as body