【发布时间】:2019-03-23 22:12:57
【问题描述】:
我有一个具有多个端点的 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。这是唯一的选择吗?
【问题讨论】:
-
不,不是。而且我认为这没有任何意义。这就是你想要做的意味着你有两个端点做同样的事情
-
嗨 Jens - 上面的代码可能不是一个很好的例子,但我遇到了实际情况,即一个端点需要调用另一个端点,因为它需要数据才能继续。
-
你应该在服务层处理它
-
如果两个方法需要获取相同的数据,方法相同,那么提取一个方法
fetchData,放到一个服务中,将服务注入到你的控制器中,然后从两者中调用方法控制器方法。方法A不需要方法B创建的ResponseEntity。他们只需要获取相同的数据。
标签: java spring rest controller