linkForSingleResource 如何工作?

How does linkForSingleResource work?

我能理解这段代码找到了 BookController,因为我在 BookController 之前做了 @ExposesResourceFor(Book.class),但是它怎么知道要解析到哪个 method/URL?

entityLinks.linkForSingleResource(book).toUri();

这解析为 127.0.0.1:8080/books/5

它只是将 /id 添加到 url 而根本不检查方法吗?

Spring HATEOAS 文档有一个 chapter on EntityLinks 显示了一个示例。

documentation on ControllerEntityLinks 包含有关预期 URI 结构的更多详细信息。集合需要一个空映射,单个资源需要一个带有 id 路径变量的映射。

@Controller
@ExposesResourceFor(Order.class)
@RequestMapping("/orders")
class OrderController {

  //The collection resource
  @RequestMapping
  ResponseEntity orders(…) { … }

  //Individual resources
  @RequestMapping("/{id}")
  ResponseEntity order(@PathVariable("id") … ) { … }  

}