簡體   English   中英

分離REST API和Spring Web服務的實現

[英]Separating out REST API and implementation for Spring web services

我一直在使用諸如@RestController@RequestMapping之類的Spring注釋在Spring Boot Web應用程序中生成簡單的服務。

因此,我有一個簡單的示例可以正常工作:

@RestController
public class HelloController {
    @RequestMapping("/")
    public String sayIt() {
        return "Hello!";
    }
}

現在,我想僅使用REST接口和DTO分離出一個API庫(jar)。 一個或多個單獨的庫將提供此接口的實際實現。 然后,我可以使用客戶端上的(輕量級)API庫來生成REST客戶端代理,以與任何實現進行對話。

那么...是否有任何注釋或配置分別標記REST接口和實現? 如果不是,那么使用Spring-y而不是使用JAX-RS注釋的方法是什么?

@Something1
public class HelloServiceApi {
    @RequestMapping("/")
    public String sayIt();
}

@Something2
public class HelloServiceImpl implements HelloServiceApi {
    public String sayIt() {
        return "Hello!";
    }
}

我建議使用一個僅包含DTO對象的jar,而不包含任何邏輯。 然后,REST服務器和客戶端都可以使用它來傳輸對象。

客戶端不應依賴於REST war / jar或邏輯。

此外,我將嘗試確保我的控制器除了將DTO轉移到域模型對象之外,不保留任何邏輯,然后將其傳遞給業務邏輯層。

我認為,REST層僅應負責外部API,參數處理,發送到下面的層(服務層)並准備響應。

就是說,您應該在服務層使用不同的實現。 這樣可以使API / REST層保持不變。

服務層(將以不同的實現方式提供)應遵循一些公共接口,該接口隨后將注入到上述其余層中。

我是否回答了您的問題?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM