关于Restful URI的斜杠,我是否可以引用权威位置? Roy Fielding的一位很棒。网上都有权威的意见。这两个位置是:尾部的斜杠表示资源,没有则没有。另一个论点是尾部的斜杠没有语义值。哪有示例:
@GetMapping(path = "/users/")
public List<User> getUsers() {
....
}
@GetMapping(path = "/users/{id}")
public User getUser(@PathVariable String type) {
.....
}
@PutMapping(path = "/users/")
public User updateUser(@RequestBody User user) {
....
}
@PostMapping(path = "/users/")
public User createUser(@RequestBody User user) {
....
}
@DeleteMapping(path = "/users/{id}")
public void deleteUser(@PathVariable Long id) {
....
}
是否应删除斜杠?
以下网址:
http://example/foo
http://example/foo/
不是相同的网址。缓存将分别存储它们。因此,从这个意义上讲,存在真正的区别。规范化URL不会删除它们。
每个URI(是否以斜杠结尾)都将指向一个资源。
据我所知,也没有使用任何具体建议。一些协议(例如WebDAV)使用它来建议以斜杠结尾的URL表示它是一个集合。
以斜杠结尾的一个小好处是文档内的相对URL(不以斜杠开头)将引用集合中的项目。利用此优势意味着客户端需要正确解析相对URL,这并不总是正确的。
我见过的大多数API都不以斜杠结尾。对于某些人来说,以斜杠结尾(并要求这样做)可能是令人惊讶的行为。
没有官方消息,因为我认为它们不存在。我对标准非常了解,因此对此很有信心。