Raj*_*Raj 19 java rest spring spring-boot spring-restcontroller
以下两者之间的区别是什么?
@GetMapping(path = "/usr/{userId}")
public String findDBUserGetMapping(@PathVariable("userId") String userId) {
return "Test User";
}
@RequestMapping(value = "/usr/{userId}", method = RequestMethod.GET)
public String findDBUserReqMapping(@PathVariable("userId") String userId) {
return "Test User";
}
Run Code Online (Sandbox Code Playgroud)
g00*_*00b 12
正如评论(和文档)中所提到的,value是别名path.Spring经常将value元素声明为常用元素的别名.在@RequestMapping(和@GetMapping,...)的情况下,这是path属性:
这是别名
path().例如@RequestMapping("/foo")相当于@RequestMapping(path="/foo").
这背后的原因是value元素在注释时是默认的,因此它允许您以更简洁的方式编写代码.
其他例子是:
@RequestParam(value→ name)@PathVariable(value→ name)但是,别名不仅限于注释元素,因为正如您在示例中演示的那样,@GetMapping别名是for @RequestMapping(method = RequestMethod.GET).
只是在代码中查找引用AliasFor可以让你看到他们经常这样做.
@GetMapping是@RequestMapping 的别名
@GetMapping 是一个组合注解,作为@RequestMapping(method = RequestMethod.GET) 的快捷方式。
value方法是 path 方法的别名。
这是 path() 的别名。例如@RequestMapping("/foo") 等价于@RequestMapping(path="/foo")。
所以这两种方法在这个意义上是相似的。
@GetMapping是的简写@RequestMapping(method = RequestMethod.GET)。
就你而言。
@GetMapping(path = "/usr/{userId}")是的简写@RequestMapping(value = "/usr/{userId}", method = RequestMethod.GET)。
两者是等效的。@GetMapping在更详细的替代方案上,最好使用速记。一件事,你可以做@RequestMapping,你不能用@GetMapping是提供多个请求的方法。
@RequestMapping(value = "/path", method = {RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT)
public void handleRequet() {
}
Run Code Online (Sandbox Code Playgroud)
使用@RequestMapping时,您需要提供多个HTTP动词。
的另一种用法@RequestMapping是当您需要为控制器提供顶层路径时。例如
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public void createUser(Request request) {
// POST /users
// create a user
}
@GetMapping
public Users getUsers(Request request) {
// GET /users
// get users
}
@GetMapping("/{id}")
public Users getUserById(@PathVariable long id) {
// GET /users/1
// get user by id
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9779 次 |
| 最近记录: |