簡體   English   中英

從同一控制器的另一個REST端點直接調用REST端點(方法)是一種好習慣嗎?

[英]Is it good practice to directly call REST endpoint (method) from another REST endpoint of same controller?

我有一個Spring REST控制器類,它有多個端點。 從另一個端點直接調用端點方法是一種好習慣嗎?

我用谷歌搜索了它,但沒有找到任何答案來處理這個問題的好方法。

@RestController
public class DataContoller {

    @GetMapping("/dataA/{param}")
    public ResponseEntity getDataA(@PathVariable String param) {
     // logic to fetch data A
     return ResponseEntity.ok("A");  
    }

    @GetMapping("/dataB/{param}")
    public ResponseEntity getDataB(@PathVariable String param) {
     ResponseEntity response = getDataA("test");
     String result = response.getBody();
     return ResponseEntity.ok("B" + result);  
    }

}

原則上它起作用,因為它只是來自另一種方法的方法調用,但我想知道這是否是一個好的做法。 如果不是很好的做法,那么理想的做法是什么。 一種選擇是使用RestTemplate。 這是唯一的選擇嗎?

它並不壞,但它也不好。

問題是直接調用getDataA("test")跳過通常在此控制器方法之前的所有內容:安全檢查,驗證,過濾,日志記錄,映射或任何其他類型的數據操作。

它引入了不穩定性:您不確定數據是什么,以及它來自何處。 它來自我的內部方法,還是HTTP調用?

一個非常簡單的建議是使用服務方法getDataA並從兩個控制器的方法中調用它。 但是,正如您已經注意到的,它並未完全替換HTTP請求。

暫無
暫無

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

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