With Spring can I make an optional path variable?

Yes, you can make a path variable optional in Spring by using @PathVariable with the required attribute set to false. However, for this to work, you also need to provide a default value or handle the absence of the variable in your logic.

Here are a few ways to handle optional path variables:

1. Using Default Path Without Variable

Define two endpoints: one with the variable and one without.

@RestController
@RequestMapping("/example")
public class ExampleController {

    @GetMapping
    public String handleWithoutPathVariable() {
        return "No path variable provided";
    }

    @GetMapping("/{id}")
    public String handleWithPathVariable(@PathVariable String id) {
        return "Path variable: " + id;
    }
}

Enter fullscreen mode Exit fullscreen mode

2. Using @PathVariable with required = false

This approach is possible when the path variable is declared in the URL template as optional (e.g., {id?} in Spring Boot 3+).

@RestController
@RequestMapping("/example")
public class ExampleController {

    @GetMapping({"/", "/{id}"})
    public String handleWithOptionalPathVariable(@PathVariable(required = false) String id) {
        if (id == null) {
            return "No path variable provided";
        }
        return "Path variable: " + id;
    }
}

Enter fullscreen mode Exit fullscreen mode

原文链接:With Spring can I make an optional path variable?

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容