30 使用RestTemplate完成访问另外一个服务的api

一个服务访问另外一个服务的技术有很多种,比如feign, dubbo, activemq, ajax+jsonp等,springmvc提供的RestTemplate是其中之一。本文将阐述如何通过RestTemplate去访问另外一个服务的api。

1、前提约束

2、操作步骤

  • 1 启动第一个springboot项目
  • 2 在主启动类同级目录下创建RestConfig.java
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestConfig{
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
    }
}
  • 4 在主启动类同级目录下创建RestTemplateController.java
import com.alibaba.fastjson.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
public class RestTemplateController{


    @Resource
    RestTemplate restTemplate;


    @GetMapping("/post")
    public String postTest()throws Exception{
//        RestTemplate restTemplate = new RestTemplate();
        MultiValueMap<String, String> requestMap= new LinkedMultiValueMap<String, String>();
        requestMap.add("id", "123");
        requestMap.add("name", "ali");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> requestEntity = new HttpEntity<String>(JSONObject.toJSON(requestMap).toString(),headers);
//        HttpEntity requestEntity = new HttpEntity(requestMap,null);
        String responseAsString = restTemplate.postForObject("http://localhost:8080/post",requestEntity,String.class);
        System.out.println(responseAsString);
        return "ok";
    }
}

    @GetMapping("/get")
    public String getTest()throws Exception{
        //RestTemplate restTemplate = new RestTemplate();
        MultiValueMap<String, String> requestMap= new LinkedMultiValueMap<String, String>();
        requestMap.add("id", "123");
        requestMap.add("name", "ali");
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> requestEntity = new HttpEntity<String>(JSONObject.toJSON(requestMap).toString(),headers);
//        HttpEntity requestEntity = new HttpEntity(requestMap,null);
        ResponseEntity responseEntity = restTemplate.getForEntity("http://localhost:8080/get",Map.class);
        System.out.println(responseEntity.getBody());
        return "ok";
    }

至此,我们完成了通过RestTemplate去访问另外一个服务中get和post的api之测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值