【发布时间】:2020-06-30 15:41:23
【问题描述】:
我使用了 SpringBoot REST API 微服务。 我有玩家、游戏和得分等三个微服务。 在 score 微服务的 POST 方法中,我想向播放器微服务发送 HTTP 请求,以通过昵称获取播放器对象。 我读过一些关于 RestTemplate 的东西,但是当我使用这个时:
final String uri = "http://localhost:8080/player";
RestTemplate restTemplate = new RestTemplate();
Player player = restTemplate.getForObject(uri, Player.class);
我有一个错误,因为我的服务在不同的目录和分数服务里面,它不知道 Player Class。 我不知道如何从一个 Rest 服务向另一个服务发出 HTTP 请求。 评分服务中的评分控制器:
@RestController
@RequestMapping("/score")
public class ScoreController {
@Autowired
private ScoreRepository repo;
//POST Score
@PostMapping
public ResponseEntity<?> createScore(@RequestBody @JsonView(Views.class) @Valid Score score) {
final String uri = "http://localhost:8080/player";
RestTemplate restTemplate = new RestTemplate();
Player player =restTemplate.getForObject(uri, Player.class);
return null;}
}
【问题讨论】:
-
它抛出了什么错误?仅使用 restTemplates 调用服务。只需验证其他服务器是否已启动并运行,即您是否真的能够从 Postman 等处点击“localhost:8080/player”。另外,您的其他 API 是否需要 GET 调用?
-
在 responseType 中,您必须提供一个类,您期望其对象作为来自被调用 API 的响应。
-
@SanketSingh 抱歉我删除了,因为我在第一个表单中再次使用,我看到在我的服务中创建播放器类时出错。但我有 Player 类但在另一个服务中
-
如果错误仍然出现,您可以添加有用的代码,以便我了解发生了什么或至少错误。
-
@SanketSingh 好的,我做到了。 Player player =restTemplate.getForObject(uri, Player.class);但它要求我在此服务中定义 Player Class
标签: spring spring-boot httprequest microservices