Bird
Raised Fist0
Spring Bootframework~20 mins

Returning different status codes in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Status Code Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What HTTP status code does this Spring Boot controller return?
Consider this Spring Boot controller method. What status code will the client receive when calling this endpoint?
Spring Boot
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    @GetMapping("/check")
    public ResponseEntity<String> check() {
        return ResponseEntity.status(201).body("Created");
    }
}
A200 OK
B404 Not Found
C201 Created
D500 Internal Server Error
Attempts:
2 left
💡 Hint
Look at the status method used in ResponseEntity.
📝 Syntax
intermediate
2:00remaining
Which option correctly returns a 404 status with a message in Spring Boot?
You want to return a 404 Not Found status with a message "User not found". Which code snippet is correct?
Areturn ResponseEntity.status(404).body("User not found");
Breturn ResponseEntity.notFound().body("User not found");
Creturn ResponseEntity.status(HttpStatus.NOT_FOUND, "User not found");
Dreturn new ResponseEntity<>("User not found", 404);
Attempts:
2 left
💡 Hint
Check the ResponseEntity methods and constructors.
🔧 Debug
advanced
2:00remaining
Why does this Spring Boot controller always return 200 OK instead of 400 Bad Request?
Look at this controller method. It tries to return 400 Bad Request on error but always returns 200 OK. Why?
Spring Boot
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ErrorController {
    @GetMapping("/error")
    public ResponseEntity<String> error(boolean hasError) {
        if (hasError) {
            return ResponseEntity.status(400).body("Bad Request");
        }
        return ResponseEntity.ok("All good");
    }
}
AThe 400 ResponseEntity is created but not returned from the method.
BResponseEntity.status(400) is invalid and defaults to 200.
CThe method parameter 'hasError' is ignored by Spring Boot.
DThe method must throw an exception to return 400 status.
Attempts:
2 left
💡 Hint
Check if the method returns the ResponseEntity created inside the if block.
❓ state_output
advanced
2:00remaining
What is the HTTP status code when this Spring Boot controller returns null body with 204 status?
This controller returns ResponseEntity with status 204 No Content and a null body. What will the client receive?
Spring Boot
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class NoContentController {
    @GetMapping("/nocontent")
    public ResponseEntity<String> noContent() {
        return ResponseEntity.noContent().build();
    }
}
A500 Internal Server Error
B204 No Content with 'null' string body
C200 OK with empty body
D204 No Content with empty body
Attempts:
2 left
💡 Hint
Check what ResponseEntity.noContent().build() does.
🧠 Conceptual
expert
3:00remaining
Which option correctly demonstrates returning different status codes based on input in Spring Boot?
You want a controller method that returns 200 OK with "Success" if input is true, and 404 Not Found with "Not Found" if false. Which code snippet correctly implements this?
A
public ResponseEntity&lt;String&gt; check(boolean input) {
    return input ? ResponseEntity.ok("Success") : ResponseEntity.notFound().build();
}
B
public ResponseEntity&lt;String&gt; check(boolean input) {
    if (input) {
        return ResponseEntity.ok("Success");
    } else {
        return ResponseEntity.status(404).body("Not Found");
    }
}
C
public ResponseEntity&lt;String&gt; check(boolean input) {
    if (input) {
        return new ResponseEntity&lt;&gt;("Success", HttpStatus.OK);
    } else {
        return new ResponseEntity&lt;&gt;("Not Found", HttpStatus.NOT_FOUND);
    }
}
D
public ResponseEntity&lt;String&gt; check(boolean input) {
    if (input) {
        return ResponseEntity.ok("Success");
    }
    return ResponseEntity.notFound().body("Not Found");
}
Attempts:
2 left
💡 Hint
Check which options correctly set both status and body for 404 response.

Practice

(1/5)
1. In Spring Boot, which class is commonly used to return different HTTP status codes from a controller?
easy
A. ResponseEntity
B. HttpStatusCode
C. HttpResponse
D. StatusCode

Solution

  1. Step 1: Understand the purpose of ResponseEntity

    ResponseEntity is a Spring class that allows you to control the HTTP status code, headers, and body of the response.
  2. Step 2: Identify the correct class for status codes

    HttpStatusCode, HttpResponse, and StatusCode are not standard Spring Boot classes for returning responses with status codes.
  3. Final Answer:

    ResponseEntity -> Option A
  4. Quick Check:

    Use ResponseEntity to return status codes [OK]
Hint: Use ResponseEntity to set status codes easily [OK]
Common Mistakes:
  • Confusing ResponseEntity with HttpStatusCode
  • Trying to return status codes without ResponseEntity
  • Using non-existent classes like HttpResponse
2. Which of the following is the correct way to return a 404 Not Found status with a message in a Spring Boot controller?
easy
A. return new ResponseEntity("Not Found", 404);
B. return new ResponseEntity<>("Not Found", 404);
C. return ResponseEntity.status(404).body("Not Found");
D. return ResponseEntity(HttpStatus.NOT_FOUND, "Not Found");

Solution

  1. Step 1: Check the syntax for ResponseEntity with status and body

    The method ResponseEntity.status(404).body("Not Found") correctly sets the status and body.
  2. Step 2: Identify incorrect syntax options

    B uses a constructor with an int 404 instead of HttpStatus.NOT_FOUND. C uses an int instead of HttpStatus enum. D is not a valid constructor call.
  3. Final Answer:

    return ResponseEntity.status(404).body("Not Found"); -> Option C
  4. Quick Check:

    Use ResponseEntity.status().body() for custom status [OK]
Hint: Use ResponseEntity.status(code).body(message) [OK]
Common Mistakes:
  • Using int instead of HttpStatus enum
  • Incorrect constructor usage
  • Missing method chaining for status and body
3. What will be the HTTP status code returned by this Spring Boot controller method?
public ResponseEntity<String> getUser(boolean found) {
    if (found) {
        return ResponseEntity.ok("User found");
    } else {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found");
    }
}
medium
A. 404 if found is true, 200 if false
B. Always 404
C. Always 200
D. 200 if found is true, 404 if false

Solution

  1. Step 1: Analyze the if condition

    If found is true, the method returns ResponseEntity.ok("User found"), which means HTTP 200.
  2. Step 2: Analyze the else condition

    If found is false, it returns ResponseEntity.status(HttpStatus.NOT_FOUND).body("User not found"), which means HTTP 404.
  3. Final Answer:

    200 if found is true, 404 if false -> Option D
  4. Quick Check:

    ResponseEntity.ok = 200, status(HttpStatus.NOT_FOUND) = 404 [OK]
Hint: ResponseEntity.ok = 200, status(HttpStatus.NOT_FOUND) = 404 [OK]
Common Mistakes:
  • Mixing up true/false branches
  • Assuming default status 200 always
  • Confusing status codes with messages
4. Identify the error in this Spring Boot controller method that tries to return a 201 Created status:
public ResponseEntity<String> createItem() {
    return new ResponseEntity<>("Item created", 201);
}
medium
A. Cannot return ResponseEntity with a String body
B. Using int 201 instead of HttpStatus enum
C. ResponseEntity constructor requires three arguments
D. Missing @ResponseBody annotation

Solution

  1. Step 1: Check ResponseEntity constructor parameters

    The constructor expects a body and an HttpStatus enum, not an int.
  2. Step 2: Identify the incorrect use of status code

    Passing 201 as int causes a compilation error; should use HttpStatus.CREATED instead.
  3. Final Answer:

    Using int 201 instead of HttpStatus enum -> Option B
  4. Quick Check:

    Use HttpStatus.CREATED, not int 201 [OK]
Hint: Use HttpStatus enum, not int, for status codes [OK]
Common Mistakes:
  • Passing int instead of HttpStatus enum
  • Forgetting to import HttpStatus
  • Assuming String body is invalid
5. You want to create a Spring Boot controller method that returns 201 Created when a new user is successfully added, 400 Bad Request if the input is invalid, and 401 Unauthorized if the user is not logged in. Which code snippet correctly implements this behavior?
hard
A. public ResponseEntity<String> addUser(boolean validInput, boolean loggedIn) { if (!loggedIn) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Unauthorized"); } if (!validInput) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid input"); } return ResponseEntity.status(HttpStatus.CREATED).body("User created"); }
B. public ResponseEntity<String> addUser(boolean validInput, boolean loggedIn) { if (!validInput) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Unauthorized"); } if (!loggedIn) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid input"); } return ResponseEntity.status(HttpStatus.CREATED).body("User created"); }
C. public ResponseEntity<String> addUser(boolean validInput, boolean loggedIn) { if (!loggedIn) { return new ResponseEntity<>("Unauthorized", 401); } if (!validInput) { return new ResponseEntity<>("Invalid input", 400); } return new ResponseEntity<>("User created", 201); }
D. } ;)102 ,"detaerc resU"(>gnirtS

Solution

  1. Step 1: Verify correct use of HttpStatus enums

    public ResponseEntity<String> addUser(boolean validInput, boolean loggedIn) { if (!loggedIn) { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Unauthorized"); } if (!validInput) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Invalid input"); } return ResponseEntity.status(HttpStatus.CREATED).body("User created"); } uses HttpStatus.UNAUTHORIZED, HttpStatus.BAD_REQUEST, and HttpStatus.CREATED enums correctly.
  2. Step 2: Check logical order and syntax

    This code checks !loggedIn first, then !validInput, then returns 201. Options B, C, and D misuse status codes or pass ints to constructors instead of using HttpStatus enums.
  3. Final Answer:

    Uses HttpStatus enums with correct logic: !loggedIn (401), !validInput (400), then 201 -> Option A
  4. Quick Check:

    Use HttpStatus enums and correct logic order [OK]
Hint: Check login first, then input, use HttpStatus enums [OK]
Common Mistakes:
  • Passing int status codes instead of HttpStatus enums
  • Mixing up 400 and 401 status codes
  • Incorrect order of condition checks
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