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

 更新时间:2022年12月05日 10:21:49   作者:David在学习  
RestTemplate 是由 Spring 提供的一个 HTTP 请求工具,它提供了常见的REST请求方案的模版,例如 GET 请求、POST 请求、PUT 请求、DELETE 请求以及一些通用的请求执行方法 exchange 以及 execute,下面看下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;
    }
}

到此这篇关于SpringBoot-RestTemplate实现调用第三方API的方式的文章就介绍到这了,更多相关SpringBoot RestTemplate调用第三方API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java分布式锁的三种实现方案

    Java分布式锁的三种实现方案

    本文主要介绍了Java分布式锁的三种实现方案。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • SpringMVC自定义参数绑定实现详解

    SpringMVC自定义参数绑定实现详解

    这篇文章主要介绍了SpringMVC自定义参数绑定实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 关于Jedis的用法以及Jedis使用Redis事务

    关于Jedis的用法以及Jedis使用Redis事务

    这篇文章主要介绍了关于Jedis的用法以及Jedis使用Redis事务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot创建的web项目整合Quartz框架的项目实践

    springboot创建的web项目整合Quartz框架的项目实践

    本文主要介绍了springboot创建的web项目整合Quartz框架的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Spring在多线程下保持事务的一致性的方法实现

    Spring在多线程下保持事务的一致性的方法实现

    当Spring在多线程环境下运行时,确保事务一致性是非常重要的,本文主要介绍了Spring在多线程下保持事务的一致性的方法实现,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • SpringBoot3中数据库集成实践详解

    SpringBoot3中数据库集成实践详解

    项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,所以下面小编就来和大家讲讲SpringBoot3如何实现数据库集成,需要的可以参考下
    2023-08-08
  • SpringBoot+log4j2.xml使用application.yml属性值问题

    SpringBoot+log4j2.xml使用application.yml属性值问题

    这篇文章主要介绍了SpringBoot+log4j2.xml使用application.yml属性值问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 深入了解Java设计模式之UML类图

    深入了解Java设计模式之UML类图

    UML 即 Unified Modeling Language 统一建模语言,是用来设计软件的可视化建模语言。本文就带大家了解一下UML中类图的定义与使用,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-11-11
  • SpringBoot中的配置文件加载优先级详解

    SpringBoot中的配置文件加载优先级详解

    这篇文章主要介绍了SpringBoot中的配置文件加载优先级详解,springboot启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件,需要的朋友可以参考下
    2024-01-01
  • Gson中@JsonAdater注解的几种方式总结

    Gson中@JsonAdater注解的几种方式总结

    这篇文章主要介绍了Gson中@JsonAdater注解的几种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论