Gan*_*hak 4 java rest spring 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);
}
}
Run Code Online (Sandbox Code Playgroud)
原则上它是有效的,因为它只是来自另一个方法的方法调用,但我想知道这是否是一个好习惯。如果这不是好的做法,那么理想的做法是什么。一种选择是使用 RestTemplate。这是唯一的选择吗?
它没有那么糟糕,但也没有那么好。
问题在于直接调用会getDataA("test")跳过通常在此控制器方法之前的所有内容:安全检查、验证、过滤、日志记录、映射或任何其他类型的数据操作。
它引入了不稳定性:您不确定哪些数据进入,以及它真正来自何处。它是来自我的内部方法,还是 HTTP 调用?
一个非常简单的建议是拥有一个服务方法getDataA并从两个控制器的方法中调用它。但是,正如您已经注意到的,它并没有完全取代 HTTP 请求。
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |