Bird
Raised Fist0
Spring Bootframework~10 mins

@PathVariable for URL parameters in Spring Boot - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to bind the URL parameter to the method argument.

Spring Boot
@GetMapping("/users/{id}")
public String getUser(@[1] String id) {
    return "User ID: " + id;
}
Drag options to blanks, or click blank then click option'
ARequestHeader
BRequestParam
CRequestBody
DPathVariable
Attempts:
3 left
💡 Hint
Common Mistakes
Using @RequestParam instead of @PathVariable
Forgetting to add the annotation
Using @RequestBody for URL parameters
2fill in blank
medium

Complete the code to specify the path variable name explicitly.

Spring Boot
@GetMapping("/products/{productId}")
public String getProduct(@PathVariable("[1]") String id) {
    return "Product ID: " + id;
}
Drag options to blanks, or click blank then click option'
Aid
Bpid
CproductId
Dproduct
Attempts:
3 left
💡 Hint
Common Mistakes
Using a different name than the URL path variable
Omitting the annotation parameter when names differ
3fill in blank
hard

Fix the error in the method parameter to correctly bind the path variable.

Spring Boot
@GetMapping("/orders/{orderId}")
public String getOrder(@PathVariable("[1]") String id) {
    return "Order ID: " + id;
}
Drag options to blanks, or click blank then click option'
AorderId
B(orderId)
C"orderId"
D("orderId")
Attempts:
3 left
💡 Hint
Common Mistakes
Missing parentheses
Missing quotes around the variable name
Using variable name without quotes
4fill in blank
hard

Fill both blanks to create a method that binds two path variables.

Spring Boot
@GetMapping("/users/{userId}/posts/{postId}")
public String getPost(@PathVariable("[1]") String user, @PathVariable("[2]") String post) {
    return "User: " + user + ", Post: " + post;
}
Drag options to blanks, or click blank then click option'
AuserId
Bpost
CpostId
Duser
Attempts:
3 left
💡 Hint
Common Mistakes
Swapping the path variable names
Using variable names instead of path variable names
5fill in blank
hard

Fill all three blanks to create a method that binds three path variables with explicit names.

Spring Boot
@GetMapping("/shops/{shopId}/categories/{categoryId}/items/{itemId}")
public String getItem(@PathVariable("[1]") String shop, @PathVariable("[2]") String category, @PathVariable("[3]") String item) {
    return "Shop: " + shop + ", Category: " + category + ", Item: " + item;
}
Drag options to blanks, or click blank then click option'
AshopId
BcategoryId
CitemId
Ditem
Attempts:
3 left
💡 Hint
Common Mistakes
Using variable names instead of path variable names
Mixing up the order of path variables

Practice

(1/5)
1. What is the main purpose of the @PathVariable annotation in Spring Boot?
easy
A. To bind form data to a Java object
B. To handle exceptions in controller methods
C. To define a fixed URL mapping for a controller method
D. To extract values from the URL path and pass them as method parameters

Solution

  1. Step 1: Understand the role of @PathVariable

    @PathVariable is used to get dynamic parts of the URL and pass them to method parameters.
  2. Step 2: Compare with other annotations

    Other options like binding form data or exception handling are done by different annotations, not @PathVariable.
  3. Final Answer:

    To extract values from the URL path and pass them as method parameters -> Option D
  4. Quick Check:

    @PathVariable = extract URL values [OK]
Hint: Remember: @PathVariable grabs values directly from URL path [OK]
Common Mistakes:
  • Confusing @PathVariable with @RequestParam
  • Thinking it binds form data
  • Assuming it handles exceptions
2. Which of the following is the correct syntax to use @PathVariable in a Spring Boot controller method to get an id from the URL /user/{id}?
easy
A. @GetMapping("/user/{id}") public String getUser(@PathVariable int id) { ... }
B. @GetMapping("/user") public String getUser(@PathVariable int id) { ... }
C. @GetMapping("/user/{id}") public String getUser(@RequestParam int id) { ... }
D. @GetMapping("/user/{id}") public String getUser(@PathVariable String name) { ... }

Solution

  1. Step 1: Match URL pattern with method parameter

    The URL has {id}, so the method must have @PathVariable int id to match the placeholder.
  2. Step 2: Check annotation and parameter type

    @GetMapping("/user/{id}") public String getUser(@PathVariable int id) { ... } correctly uses @PathVariable with int id and matches the URL pattern.
  3. Final Answer:

    @GetMapping("/user/{id}") public String getUser(@PathVariable int id) { ... } -> Option A
  4. Quick Check:

    URL {id} matches @PathVariable int id [OK]
Hint: URL placeholder and @PathVariable name must match [OK]
Common Mistakes:
  • Missing {id} in URL path
  • Using @RequestParam instead of @PathVariable
  • Mismatching parameter name and URL placeholder
3. Given the following Spring Boot controller method:
@GetMapping("/product/{category}/{id}")
public String getProduct(@PathVariable String category, @PathVariable int id) {
    return category + "-" + id;
}

What will be the output when a client requests /product/electronics/42?
medium
A. electronics-42
B. 42-electronics
C. category-id
D. electronics42

Solution

  1. Step 1: Identify parameter values from URL

    URL /product/electronics/42 means category = "electronics", id = 42.
  2. Step 2: Understand return statement

    The method returns category + "-" + id, so it returns "electronics-42".
  3. Final Answer:

    electronics-42 -> Option A
  4. Quick Check:

    Return = category + "-" + id = electronics-42 [OK]
Hint: Match URL parts to parameters in order [OK]
Common Mistakes:
  • Swapping parameter order
  • Ignoring the dash '-' in return
  • Confusing @PathVariable with @RequestParam
4. Consider this Spring Boot controller method:
@GetMapping("/order/{orderId}")
public String getOrder(@PathVariable int id) {
    return "Order: " + id;
}

What will happen when a client requests /order/100?
medium
A. Returns "Order: 0"
B. Returns "Order: 100"
C. Throws an error because parameter name does not match path variable
D. Returns null

Solution

  1. Step 1: Check URL placeholder and method parameter names

    URL has {orderId}, but method parameter is named id without specifying name in @PathVariable.
  2. Step 2: Understand default matching behavior

    Without specifying the name in @PathVariable, Spring tries to match parameter name to path variable name. They differ, causing an error.
  3. Final Answer:

    Throws an error because parameter name does not match path variable -> Option C
  4. Quick Check:

    Parameter name must match path variable or specify name [OK]
Hint: Parameter name must match path variable or use @PathVariable("name") [OK]
Common Mistakes:
  • Assuming names can differ without annotation
  • Ignoring the need to specify variable name in @PathVariable
  • Expecting default value assignment
5. You want to create a Spring Boot controller method that handles URLs like /blog/{year}/{month}/{slug} where year and month are integers and slug is a string. Which of the following method signatures correctly uses @PathVariable to extract these values?
hard
A. @GetMapping("/blog/{year}/{month}/{slug}") public String getPost(@PathVariable int yr, @PathVariable int mo, @PathVariable String sl) { ... }
B. @GetMapping("/blog/{year}/{month}/{slug}") public String getPost(@PathVariable("year") int y, @PathVariable("month") int m, @PathVariable("slug") String s) { ... }
C. @GetMapping("/blog/{year}/{month}/{slug}") public String getPost(@PathVariable String year, @PathVariable String month, @PathVariable String slug) { ... }
D. @GetMapping("/blog/{year}/{month}/{slug}") public String getPost(@PathVariable int y, @PathVariable int m, @PathVariable String s) { ... }

Solution

  1. Step 1: Match URL placeholders with method parameters

    The URL has {year}, {month}, {slug}. Method parameters must match these names or specify them explicitly.
  2. Step 2: Check parameter names and @PathVariable usage

    @GetMapping("/blog/{year}/{month}/{slug}") public String getPost(@PathVariable("year") int y, @PathVariable("month") int m, @PathVariable("slug") String s) { ... } uses different parameter names (y, m, s) but explicitly maps them to URL placeholders using @PathVariable("name"), which is correct.
  3. Final Answer:

    @GetMapping("/blog/{year}/{month}/{slug}") public String getPost(@PathVariable("year") int y, @PathVariable("month") int m, @PathVariable("slug") String s) { ... } -> Option B
  4. Quick Check:

    Explicit name mapping allows different parameter names [OK]
Hint: Use @PathVariable("name") if parameter name differs from URL placeholder [OK]
Common Mistakes:
  • Using mismatched parameter names without specifying name
  • Using wrong data types for year/month
  • Assuming parameter names must always match URL placeholders
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