在 Spring Framework 中,@GetMapping 注解用于将 HTTP GET 请求映射到控制器的处理方法上。在你提供的两个例子中,第一个使用了 path 属性,而第二个使用了路径属性(没有 path 前缀)。实际上,这两种写法是等效的,并且都定义了一个带有变量路径的 GET 映射:
-
@GetMapping(path = “/{shortLinkCode}”):
- 这里使用了
path属性,并在属性值的开头添加了/,表示这是一个根级别的路径。
- 这里使用了
-
@GetMapping(“/{shortLinkCode}”):
- 这里直接在注解中指定了路径,同样在路径值的开头添加了
/,这也表示这是一个根级别的路径。
- 这里直接在注解中指定了路径,同样在路径值的开头添加了
在 Spring 5.2 以后的版本中,可以直接在 @GetMapping 的参数中写路径模式,而不需要显式地使用 path 属性。因此,@GetMapping("/{shortLinkCode}") 是更现代和更简洁的写法。
两种写法都会告诉 Spring,当有 GET 请求到达以 / 开头,后跟一个变量 {shortLinkCode} 的路径时,应该调用这个方法。这里的 {shortLinkCode} 是一个路径变量,Spring 会将其绑定到方法的参数上。
例如:
@RestController
public class ShortLinkController {
@GetMapping("/{shortLinkCode}")
public ResponseEntity<String> redirectByShortLink(@PathVariable String shortLinkCode) {
// 处理逻辑
return ResponseEntity.ok("Redirecting to original URL...");
}
}
在这个例子中,无论使用哪种写法,只要请求的路径匹配 /任意值,redirectByShortLink 方法就会被调用,并且 shortLinkCode 参数会被赋值为 任意值。
总结来说,两种写法没有区别,只是风格和习惯的问题。建议使用更简洁的写法 @GetMapping("/{shortLinkCode}")。
2374

被折叠的 条评论
为什么被折叠?



