Bird
Raised Fist0
Spring Bootframework~10 mins

Request mapping by method and path in Spring Boot - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Request mapping by method and path
Client sends HTTP request
↓
Spring Boot Dispatcher
↓
Check HTTP method (GET, POST, etc.)
↓
Match request path to @RequestMapping path
↓
Call matching controller method
↓
Return response to client
Spring Boot listens for HTTP requests, matches the method and path to controller methods annotated with @RequestMapping, then runs the matched method.
Execution Sample
Spring Boot
@RestController
@RequestMapping("/api")
public class MyController {
  @GetMapping("/hello")
  public String sayHello() {
    return "Hello";
  }
}
Defines a controller that responds to GET requests at path /api/hello with "Hello".
Execution Table
StepHTTP MethodRequest PathMatch @RequestMappingController Method CalledResponse
1GET/api/helloMatches class @RequestMapping("/api") and method @GetMapping("/hello")sayHello()"Hello"
2POST/api/helloMatches class @RequestMapping("/api") but no POST method for /helloNone404 Not Found
3GET/api/goodbyeMatches class @RequestMapping("/api") but no GET method for /goodbyeNone404 Not Found
💡 Execution stops after matching request method and path or returning 404 if no match.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3
HTTP MethodNoneGETPOSTGET
Request PathNone/api/hello/api/hello/api/goodbye
Matched Controller MethodNonesayHello()NoneNone
ResponseNone"Hello"404 Not Found404 Not Found
Key Moments - 2 Insights
Why does a POST request to /api/hello return 404 even though the path matches?
Because the controller only has a GET method mapped for /hello, no POST method exists. See execution_table row 2.
How does Spring Boot combine class-level and method-level @RequestMapping paths?
It joins the class-level path (/api) with the method-level path (/hello) to form the full path (/api/hello). See execution_table row 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what response is returned for a GET request to /api/hello?
A404 Not Found
B"Hello"
C500 Internal Server Error
DEmpty response
💡 Hint
Check execution_table row 1 under Response column.
At which step does the request method not match any controller method?
AStep 1
BStep 3
CStep 2
DNone
💡 Hint
Look at execution_table rows 2 and 3 for method matching.
If you add a @PostMapping("/hello") method, what changes in the execution table?
AStep 2 would call the new method and return a response instead of 404
BStep 1 would change response
CStep 3 would match the new method
DNo changes
💡 Hint
Adding a POST method for /hello affects POST requests at that path (see Step 2).
Concept Snapshot
Use @RequestMapping or shortcut annotations (@GetMapping, @PostMapping) to map HTTP methods and paths.
Class-level @RequestMapping sets a base path.
Method-level mappings add to the base path.
Spring matches incoming requests by method and path to call the right controller method.
If no match, returns 404 Not Found.
Full Transcript
In Spring Boot, you map HTTP requests to controller methods using @RequestMapping and its shortcuts like @GetMapping. The class-level @RequestMapping sets a base path, and method-level annotations add to it. When a request comes in, Spring checks the HTTP method and path to find the matching method. If found, it runs that method and returns the response. If not, it returns 404. For example, a GET request to /api/hello matches a method annotated with @GetMapping("/hello") inside a class annotated with @RequestMapping("/api"). A POST request to the same path returns 404 if no POST method exists. This flow ensures your app responds correctly to different HTTP methods and paths.

Practice

(1/5)
1. What does the @RequestMapping annotation do in Spring Boot?
easy
A. It styles the HTML page returned by the controller.
B. It creates a new database connection automatically.
C. It links a URL path and HTTP method to a specific method in a controller.
D. It schedules background tasks to run periodically.

Solution

  1. Step 1: Understand the purpose of @RequestMapping

    @RequestMapping is used to connect web requests to controller methods in Spring Boot.
  2. Step 2: Identify what it links

    It links both the URL path and the HTTP method (GET, POST, etc.) to the method that should handle the request.
  3. Final Answer:

    It links a URL path and HTTP method to a specific method in a controller. -> Option C
  4. Quick Check:

    @RequestMapping links URL and method [OK]
Hint: Remember: @RequestMapping connects URL + HTTP method to code [OK]
Common Mistakes:
  • Thinking @RequestMapping styles HTML output
  • Confusing it with database or scheduling annotations
  • Assuming it only maps URL without HTTP method
2. Which of the following is the correct way to map a GET request to path "/home" using @RequestMapping?
easy
A. @RequestMapping(route = "/home", method = GET)
B. @RequestMapping(path = "/home", method = RequestMethod.GET)
C. @RequestMapping(value = "/home", type = "GET")
D. @RequestMapping(method = "GET", url = "/home")

Solution

  1. Step 1: Recall correct @RequestMapping syntax

    The correct syntax uses 'path' or 'value' for URL and 'method' with RequestMethod enum for HTTP method.
  2. Step 2: Match options with syntax

    @RequestMapping(path = "/home", method = RequestMethod.GET) uses path and method=RequestMethod.GET correctly. Others use invalid attribute names or wrong types.
  3. Final Answer:

    @RequestMapping(path = "/home", method = RequestMethod.GET) -> Option B
  4. Quick Check:

    Correct syntax [OK]
Hint: Use 'path' and RequestMethod.GET for GET mapping [OK]
Common Mistakes:
  • Using 'url' instead of 'path' or 'value'
  • Passing HTTP method as string instead of RequestMethod enum
  • Using wrong attribute names like 'route' or 'type'
3. Given this controller method:
@RequestMapping(path = "/test", method = RequestMethod.POST)
public String test() {
    return "Success";
}
What happens when a client sends a GET request to "/test"?
medium
A. The server crashes with an exception.
B. The method runs and returns "Success".
C. Spring returns a 404 Not Found error.
D. Spring returns a 405 Method Not Allowed error.

Solution

  1. Step 1: Identify the mapped HTTP method

    The method is mapped only to POST requests at path "/test".
  2. Step 2: Understand what happens on GET request

    A GET request to the same path is not handled, so Spring returns 405 Method Not Allowed.
  3. Final Answer:

    Spring returns a 405 Method Not Allowed error. -> Option D
  4. Quick Check:

    GET to POST-only path = 405 error [OK]
Hint: GET request to POST-only path causes 405 error [OK]
Common Mistakes:
  • Assuming GET runs the POST method
  • Thinking it returns 404 Not Found instead
  • Believing server crashes on wrong method
4. What is wrong with this mapping?
@RequestMapping(path = "/data", method = "POST")
public String saveData() {
    return "Saved";
}
medium
A. The method attribute should use RequestMethod.POST, not a string.
B. The path attribute cannot be used with @RequestMapping.
C. The method must return void, not String.
D. The method name must be saveDataPost, not saveData.

Solution

  1. Step 1: Check method attribute type

    The method attribute expects a RequestMethod enum value, not a string.
  2. Step 2: Identify correct usage

    Using method = "POST" is invalid; it should be method = RequestMethod.POST.
  3. Final Answer:

    The method attribute should use RequestMethod.POST, not a string. -> Option A
  4. Quick Check:

    method attribute needs RequestMethod enum [OK]
Hint: Use RequestMethod.POST enum, not string "POST" [OK]
Common Mistakes:
  • Passing HTTP method as string instead of enum
  • Thinking path attribute is invalid
  • Assuming return type or method name causes error
5. You want to create two methods in a controller: one handles GET requests at "/items" and another handles POST requests at the same path "/items". Which is the best way to do this?
hard
A. Use two methods with @RequestMapping(path = "/items", method = RequestMethod.GET) and @RequestMapping(path = "/items", method = RequestMethod.POST).
B. Use one method with @RequestMapping(path = "/items") and check HTTP method inside the method manually.
C. Use @RequestMapping(path = "/items") on both methods without specifying method attribute.
D. Use @RequestMapping(method = RequestMethod.GET) on one method and @RequestMapping(method = RequestMethod.POST) on the other without path.

Solution

  1. Step 1: Understand how to map same path with different methods

    Spring allows multiple methods mapped to the same path but different HTTP methods using method attribute.
  2. Step 2: Evaluate options

    Use two methods with @RequestMapping(path = "/items", method = RequestMethod.GET) and @RequestMapping(path = "/items", method = RequestMethod.POST). correctly uses two methods with same path but different HTTP methods. Use one method with @RequestMapping(path = "/items") and check HTTP method inside the method manually. is less clean and error-prone. Use @RequestMapping(path = "/items") on both methods without specifying method attribute. causes ambiguity. Use @RequestMapping(method = RequestMethod.GET) on one method and @RequestMapping(method = RequestMethod.POST) on the other without path. misses path, so won't map correctly.
  3. Final Answer:

    Use two methods with @RequestMapping(path = "/items", method = RequestMethod.GET) and @RequestMapping(path = "/items", method = RequestMethod.POST). -> Option A
  4. Quick Check:

    Separate methods with same path, different HTTP methods [OK]
Hint: Map same path with different methods by specifying method attribute [OK]
Common Mistakes:
  • Not specifying method attribute causing conflicts
  • Checking HTTP method manually inside one method
  • Omitting path attribute causing mapping errors
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