软件编程
位置:首页>> 软件编程>> java编程>> SpringBoot-RestTemplate实现调用第三方API的方式

SpringBoot-RestTemplate实现调用第三方API的方式

作者:David在学习  发布时间:2022-12-29 09:49:56 

标签:SpringBoot,RestTemplate,API

RestTemplate简介
Spring RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率,所以很多客户端比如 Android或者第三方服务商都是使用 RestTemplate 请求 restful 服务。

下面通过代码讲解下SpringBoot-RestTemplate实现调用第三方API的方法,内容如下所示:

1. RestTemplate的方式来调用别人的API,将数据转化为json 格式,引入了fastjson

<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.28</version>
</dependency>

2. 编写RestTemlateConfig,配置好相关信息

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestTemplateConfig {
   @Bean
   public RestTemplate restTemplate(ClientHttpRequestFactory factory){
       return new RestTemplate(factory);
   }

@Bean
   public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
       SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
       factory.setConnectTimeout(15000);
       factory.setReadTimeout(5000);
       return factory;
   }
}

3.编写controller,调用第三方的API,浏览器模拟get请求,postman模拟post请求



import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.Map;

@RestController
public class SpringRestTemplateController {
   @Autowired
   private RestTemplate restTemplate;
   /***********HTTP GET method*************/
   @GetMapping("/testGetApi")
   public String getJson(){
       String url="http://localhost:8089/o2o/getshopbyid?shopId=19";
       //String json =restTemplate.getForObject(url,Object.class);
       ResponseEntity<String> results = restTemplate.exchange(url, HttpMethod.GET, null, String.class);
       String json = results.getBody();
       return json;
   }

/**********HTTP POST method**************/
   @PostMapping(value = "/testPost")
   public Object postJson(@RequestBody JSONObject param) {
       System.out.println(param.toJSONString());
       param.put("action", "post");
       param.put("username", "tester");
       param.put("pwd", "123456748");
       return param;
   }

@PostMapping(value = "/testPostApi")
   public Object testPost() {
       String url = "http://localhost:8081/girl/testPost";
       JSONObject postData = new JSONObject();
       postData.put("descp", "request for post");
       JSONObject json = restTemplate.postForEntity(url, postData, JSONObject.class).getBody();
       return json;
   }
}

来源:https://blog.csdn.net/a1032818891/article/details/81172478

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com