Using @RequestMapping for Base Paths in Spring Boot
📖 Scenario: You are building a simple Spring Boot web application that manages greetings. You want to organize your controller so that all greeting-related URLs start with the same base path.
🎯 Goal: Create a Spring Boot controller class with a base path using @RequestMapping at the class level, and add methods to handle specific greeting requests under that base path.
📋 What You'll Learn
Create a controller class named GreetingController
Use @RequestMapping at the class level with the base path /greetings
Add a method hello() mapped to /hello that returns the string Hello, World!
Add a method goodbye() mapped to /goodbye that returns the string Goodbye, World!
💡 Why This Matters
🌍 Real World
Organizing controller URLs with base paths helps keep your web application routes clean and easy to manage.
💼 Career
Understanding how to use @RequestMapping for base paths is essential for building REST APIs and web applications in Spring Boot, a common skill for Java backend developers.
Progress0 / 4 steps
1
Create the GreetingController class
Create a public class named GreetingController annotated with @RestController.
Spring Boot
Hint
Use @RestController to make the class a REST controller.
2
Add @RequestMapping base path to the class
Add @RequestMapping("/greetings") annotation to the GreetingController class to set the base path for all methods.
Spring Boot
Hint
Place @RequestMapping("/greetings") above the class declaration.
3
Add hello() method mapped to /hello
Inside GreetingController, add a public method named hello annotated with @RequestMapping("/hello") that returns the string Hello, World!.
Spring Boot
Hint
Use @RequestMapping("/hello") above the method and return the exact string.
4
Add goodbye() method mapped to /goodbye
Add a public method named goodbye annotated with @RequestMapping("/goodbye") that returns the string Goodbye, World! inside GreetingController.
Spring Boot
Hint
Use @RequestMapping("/goodbye") above the method and return the exact string.
Practice
(1/5)
1. What does placing @RequestMapping("/api") on a Spring Boot controller class do?
easy
A. Automatically maps all methods to the root URL /.
B. Defines the HTTP method type for all requests in the class.
C. Sets a base URL path for all request methods inside the class.
D. Disables URL mapping for the controller.
Solution
Step 1: Understand class-level @RequestMapping
When @RequestMapping is placed on a controller class, it sets a base URL path prefix for all methods inside.
Step 2: Effect on method-level mappings
Each method's path is appended to this base path, organizing URLs under a common root.
Final Answer:
Sets a base URL path for all request methods inside the class. -> Option C
Quick Check:
Class-level @RequestMapping sets base path = A [OK]
Hint: Class-level @RequestMapping sets base path prefix [OK]
Common Mistakes:
Confusing base path with HTTP method type
Thinking it maps all methods to root path
Assuming it disables mapping
2. Which of the following is the correct way to set a base path /users for a Spring Boot controller using @RequestMapping?
easy
A. @RequestMapping("/users") on each method only
B. @RequestMapping(path = "/users") on the class
C. @RequestMapping(method = "users") on the class
D. @RequestMapping(basePath = "/users") on the class
Solution
Step 1: Check correct syntax for base path
The correct attribute to set the path is path or directly the value in @RequestMapping. Using @RequestMapping(path = "/users") is valid and clear.
Step 2: Validate other options
@RequestMapping("/users") on each method only sets path only on methods, not base path. @RequestMapping(method = "users") on the class incorrectly uses method attribute for path. @RequestMapping(basePath = "/users") on the class uses a non-existent attribute basePath.
Final Answer:
@RequestMapping(path = "/users") on the class -> Option B
Quick Check:
Use path attribute with leading slash [OK]
Hint: Use path="/yourBase" with leading slash on class [OK]
Common Mistakes:
Using wrong attribute like method= for path
Using wrong attribute name like basePath
Setting base path only on methods
3. Given the controller class below, what is the full URL path to access the getUser() method?
@RequestMapping("/api")
public class UserController {
@RequestMapping("/user")
public String getUser() { return "user"; }
}
medium
A. /user
B. /user/api
C. /api
D. /api/user
Solution
Step 1: Identify class-level base path
The class has @RequestMapping("/api"), so all method paths start with /api.
Step 2: Append method-level path
The method getUser() has @RequestMapping("/user"), so the full path is /api + /user = /api/user.
Final Answer:
/api/user -> Option D
Quick Check:
Base path + method path = full URL [OK]
Hint: Combine class and method paths with slashes [OK]
Common Mistakes:
Ignoring class-level path
Mixing order of paths
Missing leading slash
4. What is wrong with this controller code?
@RequestMapping("api")
public class ProductController {
@RequestMapping("/list")
public String listProducts() { return "products"; }
}
medium
A. Class must be annotated with @RestController or @Controller.
B. Missing leading slash in class-level @RequestMapping path.
C. Method-level @RequestMapping cannot have a path.
D. Method must return ResponseEntity, not String.
Solution
Step 1: Identify missing controller annotation
The class is missing @Controller or @RestController. Without it, the class is not registered as a handler despite having @RequestMapping.
Step 2: Validate other options
Method-level paths are allowed. Leading slash is optional (Spring prepends it). Returning String is valid for view names or with @ResponseBody.
Final Answer:
Class must be annotated with @RestController or @Controller. -> Option A
Quick Check:
Controller annotation required [OK]
Hint: Use @RestController or @Controller on controller classes [OK]
Common Mistakes:
Missing @RestController or @Controller annotation
Thinking method paths are disallowed
Confusing @Controller with @RestController requirement
5. You want all endpoints in your controller to start with /shop, and inside you have a method mapped to /items. Which of these setups correctly maps the full URL /shop/items and why?
Option A:
@RequestMapping("/shop")
public class ShopController {
@RequestMapping("/items")
public String getItems() { return "items"; }
}
Option B:
@RequestMapping("/shop/items")
public class ShopController {
@RequestMapping
public String getItems() { return "items"; }
}
Option C:
@RequestMapping
public class ShopController {
@RequestMapping("/shop/items")
public String getItems() { return "items"; }
}
Option D:
@RequestMapping(shop)
public class ShopController {
@RequestMapping(items)
public String getItems() { return "items"; }
}
hard
A. Option A correctly sets base path and method path with leading slashes.
B. Option B sets full path on class, method has no path, works fine.
C. Option C sets full path on method only, class has no base path.
D. Option D misses leading slashes, so paths are invalid.
Solution
Step 1: Identify the correct configuration
The setup with class-level @RequestMapping("/shop") and method-level @RequestMapping("/items") combines to /shop/items with full syntax validity (parentheses, quotes, leading slashes).
Step 2: Examine incorrect configurations
The full class path setup lacks parentheses on method @RequestMapping (syntax error). The full method path setup lacks parentheses on class @RequestMapping (syntax error). The no-slash setup lacks quotes on shop and items (syntax error).
Final Answer:
Option A correctly sets base path and method path with leading slashes. -> Option A
Quick Check:
Base path + method path + valid syntax = full URL [OK]
Hint: Use leading slashes on class and method paths for clarity [OK]
Common Mistakes:
Missing parentheses in @RequestMapping
Missing quotes around path values
Omitting leading slashes on paths
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.