2017-05-02 28 views
2

我可以理解這段代碼找到BookController,因爲我在BookController之前做了@ExposesResourceFor(Book.class),但它怎麼知道要解析哪個方法/ URL?linkForSingleResource如何工作?

entityLinks.linkForSingleResource(book).toUri(); 

,這會分解成127.0.0.1:8080/books/5

是否只是添加/ ID的URL和不檢查在所有的方法?

+0

嗯,事實上,信息可用,並不意味着很容易發現和理解,特別是對人的新的課題。所以我決定寫一個正確的答案並刪除我的評論。歡呼聲和+1 – zeroflagL

回答

2

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") …) { … } 

}

+0

謝謝,原來我不知道如何閱讀Java文檔,這個實現和接口類是分開的。 – EralpB