繁体   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