【发布时间】:2020-01-27 20:28:35
【问题描述】:
我目前在微服务工作。
当我尝试调用 github API 时出现此错误:
java.lang.IllegalStateException: No instances available for api.github.com
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:119) ~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.execute(RibbonLoadBalancerClient.java:99) ~[spring-cloud-netflix-ribbon-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.client.loadbalancer.LoadBalancerInterceptor.intercept(LoadBalancerInterceptor.java:58) ~[spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
我正在使用 Discovery Server,这是调用外部 API 的代码
package com.github.ProjectAPI.resources;
import com.github.ProjectAPI.models.GithubProject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import java.util.Arrays;
@RestController
@RequestMapping("/project")
public class GithubSingleProjectResource {
@Autowired
private RestTemplate restTemplate;
@RequestMapping("/{projectId}")
public List<GithubProject> getMovieInfo(@PathVariable("projectId") String projectId)
{
GithubProject[] githubProjects = restTemplate.getForObject("https://api.github.com/users/XXXX/repos", GithubProject[].class);
List<GithubProject> projectsList = Arrays.asList(githubProjects);
return projectsList;
}
}
有什么建议吗? 当我调用像 localhost 这样的 URL 时,一切正常。
我是怎么做豆子的:
@SpringBootApplication
@EnableEurekaClient
public class ProjectApiApplication {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(ProjectApiApplication.class, args);
}
【问题讨论】:
-
你是如何创建
RestTemplate的? -
在另一个班级。这是豆子
-
请显示上面的 bean 创建。
-
我编辑帖子。
-
您不能将普通 url 与负载平衡的 rest 模板一起使用。请参阅有关提供 2 个其余模板以供使用的文档
标签: java spring-cloud github-api resttemplate