![](/img/trans.png)
[英]Best approach to creating endpoints for a RESTful API in java using Spring
[英]Best approach for creating URLs in Spring
假設我們有帶有URL映射的控制器,例如movie/{id}-{title}
, actor/{id}-{name}
等。這些映射標識了我們應用中的某些對象,主要是實體-我們可以說這是RESTful服務。
我正在尋找一種解決方案,該將那些負責創建這些URI的方法放在哪里。 我認為在多個JSP文件和其他一些地方(重定向等)中創建它們是多余的。
首先,我想到的是使用方法public URI getURI()
創建一些接口,該接口將在控制器中使用。 但是,在我看來,這將對實體產生太多影響-我更喜歡實體僅代表數據並且僅包含更改狀態的方法。
我的第二個想法是創建一個URIService
具有重載方法,比如URI getURI(Movie m)
和URI getURI(Actor a)
,但會有在編譯時重載方法的選擇問題。 例如,在JSP中的EL中效果不佳,因為解決方案將以不同的方式命名方法。
我不想重新發明輪子,所以也許您知道或使用某些解決方案來解決這個問題?
您希望解決方案的企業精神如何? (我只是在開玩笑)
這是一個解決方案:擁有一個具有URI getURI(Object o)
類的方法的服務。 此方法將檢查傳遞的對象是否屬於帶有指定URI路徑的注釋的類。 注釋示例:
public @interface PathTemplate {String value();}
帶有注釋的示例類:
@PathTemplate("/movie/{title}-{id}")
public class Movie {
private int id;private String title;
// getters and setters too
}
現在, getURI
方法將看到參數對象的類具有PathTemplate
批注,並將使用bean內省法對參數進行插值。 瞧! 可擴展且相對分離的URI生成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.