SpringBoot-RestTemplate实现调用第三方API

本文介绍如何使用 Spring Boot 中的 RestTemplate 调用第三方 API,并通过 GET 和 POST 请求获取及发送 JSON 数据。具体步骤包括:引入 fastjson 依赖,配置 RestTemplate,实现 Controller 层的方法来模拟不同类型的 HTTP 请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
    }
}

 

Spring Boot调用第三方API接口通常会用到一些常用的Java库,比如Apache HttpClient、OkHttp或者Spring提供的RestTemplate。下面是使用RestTemplate进行API调用的基本步骤: 1. 引入依赖:在Spring Boot项目的pom.xml中添加`spring-boot-starter-web`依赖,这个依赖中包含了RestTemplate。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> ``` 2. 注入RestTemplate:在Spring Boot的主类或配置类上添加`@SpringBootApplication`注解,并在需要使用RestTemplate的类中使用`@Autowired`注解来注入RestTemplate实例。 ```java @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public RestTemplate restTemplate() { return new RestTemplate(); } } public class SomeService { @Autowired private RestTemplate restTemplate; // 其他代码... } ``` 3. 调用第三方API:在业务逻辑中使用注入的RestTemplate调用第三方API接口。可以通过GET、POST、PUT、DELETE等方法发送HTTP请求,并处理返回的结果。 ```java public String callThirdPartyApi(String apiUrl, Map<String, String> params) { // 如果API需要参数,可以使用MultiValueMap构建请求参数 MultiValueMap<String, String> map = new LinkedMultiValueMap<>(); map.setAll(params); // 发送GET请求 ResponseEntity<String> response = restTemplate.getForEntity(apiUrl, String.class, map); // 处理响应 return response.getBody(); } ``` 4. 错误处理和配置:在调用第三方API时,需要处理可能出现的异常,如`HttpClientErrorException`或`HttpServerErrorException`。还可以配置RestTemplate,例如自定义连接超时、读取超时等。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值