美文网首页
30 使用RestTemplate完成访问另外一个服务的api

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

作者: 张力的程序园 | 来源:发表于2020-07-28 18:01 被阅读0次

    一个服务访问另外一个服务的技术有很多种,比如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之测试。

    相关文章

      网友评论

          本文标题:30 使用RestTemplate完成访问另外一个服务的api

          本文链接:https://www.haomeiwen.com/subject/knfqrktx.html