SpringBoot怎么调用外部接口实现数据交互

其他教程   发布日期:2025年03月06日   浏览次数:144

本文小编为大家详细介绍“SpringBoot怎么调用外部接口实现数据交互”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么调用外部接口实现数据交互”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

springboot调用外部接口常用的方式

在系统开发过程中,免不了要去调用第三方接口,springboot为我们提供了几种调用第三方接口的方法

1、使用原始httpClient请求

  1. <dependency>
  2. <groupId>org.apache.httpcomponents</groupId>
  3. <artifactId>httpclient</artifactId>
  4. <version>4.4.1</version>
  5. </dependency>
  1. public static JSONObject doPost(JSONObject date) {
  2. String assessToken="";
  3. CloseableHttpClient client = HttpClients.createDefault();
  4. // 要调用的接口url
  5. String url = "http://127.0.0.1:8080 /submit";
  6. HttpPost post = new HttpPost(url);
  7. JSONObject jsonObject = null;
  8. try {
  9. //创建请求体并添加数据
  10. StringEntity s = new StringEntity(date.toString());
  11. //此处相当于在header里头添加请求头等参数
  12. s.setContentType("application/json");
  13. s.setContentEncoding("UTF-8");
  14. post.setEntity(s);
  15. //此处相当于在Authorization里头添加Bear token参数信息
  16. post.addHeader("Authorization", "Bearer " +assessToken);
  17. HttpResponse res = client.execute(post);
  18. String response1 = EntityUtils.toString(res.getEntity());
  19. if (res.getStatusLine()
  20. .getStatusCode() == HttpStatus.SC_OK) {
  21. // 返回json格式:
  22. String result = EntityUtils.toString(res.getEntity());
  23. jsonObject = JSONObject.parseObject(result);
  24. }
  25. } catch (Exception e) {
  26. throw new RuntimeException(e);
  27. }
  28. return jsonObject;
  29. }

2、使用RestTemplate请求

1、get请求

  1. /**
  2. ** 入参 请求的url、响应体类型
  3. */
  4. RestTemplate restTemplate=new RestTemplate();
  5. UriComponents
  6. uriComponents= UriComponentsBuilder.fromUriString("http://127.0.0.1:8080/user?name={name}")
  7. .build()
  8. .expand("jpl")
  9. .encode();
  10. URI uri=uriComponents.toUri();
  11. String body = restTemplate.getForEntity(uri, String.class).getBody();
  12. /**
  13. ** 入参 请求的url、响应体类型、请求体的参数
  14. */
  15. RestTemplate restTemplate=new RestTemplate();
  16. Map params=new HashMap<>();
  17. params.put("name","dada"); //
  18. ResponseEntity responseEntity = restTemplate.getForEntity("http://127.0.0.1:8080/user?name={name}", String.class, params);

2、post请求

  1. public String submit(String documentId){
  2. String assessToken="";
  3. RestTemplate restTemplate = new RestTemplate();
  4. //创建请求头
  5. HttpHeaders httpHeaders = new HttpHeaders();
  6. //此处相当于在Authorization里头添加Bear token参数信息
  7. httpHeaders.add(HttpHeaders.AUTHORIZATION, "Bearer " + assessToken);
  8. //此处相当于在header里头添加content-type等参数
  9. httpHeaders.add(HttpHeaders.CONTENT_TYPE,"application/json");
  10. Map<String, Object> map = (Map<String, Object>) new HashMap<>().put("documentId", JSONObject.parse(documentId));
  11. String jsonStr = JSON.toJSONString(map);
  12. //创建请求体并添加数据
  13. HttpEntity<Map> httpEntity = new HttpEntity<Map>(map, httpHeaders);
  14. String url = "http://127.0.0.1:8080/submit";
  15. ResponseEntity<String> forEntity = restTemplate.postForEntity(url,httpEntity,String.class);//此处三个参数分别是请求地址、请求体以及返回参数类型
  16. return forEntity.toString();
  17. }

3、使用Feign请求

fegin常见咋微服务中使用,这里就不过多介绍

  1. <dependency>
  2. <groupId>org.springframework.cloud</groupId>
  3. <artifactId>spring-cloud-starter-feign</artifactId>
  4. <version>1.2.2.RELEASE</version>
  5. </dependency>

简单介绍一下如果使用feign遇到需要添加请求头等信息时,遇到重写feign的apply方法

  1. @Configuration
  2. public class FeignConfig implements RequestInterceptor {
  3. @Override
  4. public void apply(RequestTemplate requestTemplate) {
  5. //添加token
  6. requestTemplate.header("token", "");
  7. }
  8. }

4、小结

RestTemplate、HTTPClient 和 Feign 都是 Java 中用于发送 HTTP 请求的工具,它们都可以用于构建 HTTPRestful API。以下是它们的优缺点:

RESTTemplate

优点:

RestTemplate 简单易用,支持自定义配置,可以更好地满足业务需求。

RestTemplate 可以处理 HTTP 请求和响应,实现对 HTTP 请求和响应的拦截、代理、拦截等功能。

缺点:

RestTemplate 的功能较为复杂,需要手动实现请求体、请求头、响应体、响应头等自定义配置,因此需要一定的编程经验和技能。

RestTemplate 默认情况下使用 Apache HTTP 库,因此在处理 HTTP 请求时,可能对某些业务场景不太友好,需要手动配置。

HTTPClient

优点:

HTTPClient 简单易用,支持多种 HTTP 库,可以更好地满足不同的业务需求。

HTTPClient 可以处理 HTTP 请求和响应,实现对 HTTP 请求和响应的拦截、代理、拦截等功能。

缺点:

HTTPClient 默认情况下使用 Apache HTTP 库,因此在处理 HTTP 请求时,可能对某些业务场景不太友好,需要手动配置。

HTTPClient 的性能可能不如 RestTemplate 。

Feign

优点:

Feign 是 Java 中的 HTTP客户端,可以支持多种 HTTP 库,可以更好地满足不同的业务需求。

Feign 可以实现自定义的请求拦截、响应拦截、请求体拦截、响应体拦截等功能,因此可以更好地满足业务需求。

Feign 内置了丰富的验证和认证功能,可以支持自定义的验证和认证规则。

缺点:

Feign 的功能较为复杂,需要手动实现请求拦截、响应拦截、请求体拦截、响应体拦截、验证和认证等功能,因此需要一定的编程经验

以上就是SpringBoot怎么调用外部接口实现数据交互的详细内容,更多关于SpringBoot怎么调用外部接口实现数据交互的资料请关注九品源码其它相关文章!