springboot中使用RestTemplate调用rest服务

日常开发中,调用远程的rest服务是很常见的,比如微服务情况下的rest服务调用,又或者是调用第三方服务。微服务下的调用有服务注册与发现机制来调用,也可以使用RestTemplate方式来调用;而要是第三方服务,那么一般情况下是通过HTTP请求来调用。

接下来就看说一下在springboot项目中,用RestTemplate来调用远程rest服务,包括第三方服务。

首先我们的web项目中一般会有web依赖,此依赖中已有RestTemplate类,如下所示:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

其次假设有这样一个rest服务接口,提供一个简单的返回(服务的启动地址为“http://127.0.0.1:8080”),如下所示:

@RestController
@Slf4j
public class RestServerController {

    @GetMapping("/rest/{name}")
    public String rest(@PathVariable String name) {
        log.info("request -> {}", name);
        return "Hello, " + name + " !";
    }

}

那么我们要想调用这个服务,只需要用RestTemplate实例的方法即可成功调用。而RestTemplate默认是不会自动注入在spring容器中的,但是RestTemplateBuilder这个用来构建RestTemplate的实例是被注入的,所以需要用其来构建RestTemplate

配置一个构建RestTemplate的配置类如下:

@Configuration
public class RestTemplateConfig {

    @Resource
    private RestTemplateBuilder restTemplateBuilder;

    @Bean
    public RestTemplate buildRestTemplate() {
        return restTemplateBuilder
                .rootUri("http://127.0.0.1:8080")
                .setConnectTimeout(Duration.ofSeconds(5))
                .build();
    }
}

最后在调用放做类似如下方式的调用即可:

@Service
public class RestTemplateService {

    private RestTemplate restTemplate;

    @Autowired
    public RestTemplateService(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

    public void callRest() {
        String response = restTemplate.getForObject("/rest/{name}", String.class, "lazycece");
        System.out.println(response);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值