[英]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.