【发布时间】:2020-09-16 10:55:06
【问题描述】:
我知道@PathVariable 和@RequestParam 之间的区别,这不是重点。
我也阅读了一些文章,但我仍然不明白在简单的情况下何时使用其中一种。
对于 REST API,假设我有一个带有 id 和 username 的 User 实体(两者都是唯一的)。
现在我想通过用户名获取用户。
我有两个选择:
@GetMapping(path = "/users/{username}")
public ResponseEntity<Object> getUser(@PathVariable String username){
//Get user
}
或
@GetMapping(path = "/users}")
public ResponseEntity<Object> getUser(@RequestParam String username){
//Get user
}
我必须使用哪一个(@RequestParam 在代码中不是强制性的,我放置它只是为了更清楚)?
谢谢
【问题讨论】:
-
这完全取决于你,但典型的 REST API 将在路径中使用 ID,所以我会亲自选择选项 #2(在
/users/上没有尾随/),例如/users?username=whatever -
这是一种设计选择。如果你想访问像“/users/john”这样的 URL,你可以使用路径变量,但使用请求参数“/users?username=john”。可能重复:stackoverflow.com/questions/37878684/…
-
谢谢,我编辑了
/ -
我看到了可能重复的问题,但我真的没有答案,对我来说还不清楚......
-
注意:最好在可行的情况下返回
ResponseEntity<ActualResultType>(或者只返回结果类型并省去ResponseEntity,除非您需要设置标题)。
标签: java spring-boot rest http