常用的Spring Boot调用外部接口方式实现数据交互

2023-07-04 0 608

目录

springboot调用外部接口常用方式

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

1、使用原始httpClient请求

<dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.4.1</version>
        </dependency>
public static JSONObject doPost(JSONObject date) {
    String assessToken=\"\";
    CloseableHttpClient client = HttpClients.createDefault();
    // 要调用的接口url
    String url = \"http://127.0.0.1:8080 /submit\";
    HttpPost post = new HttpPost(url);
    JSONObject jsonObject = null;
    try {
        //创建请求体并添加数据
        StringEntity s = new StringEntity(date.toString());
        //此处相当于在header里头添加请求头等参数
        s.setContentType(\"application/json\");
        s.setContentEncoding(\"UTF-8\");
        post.setEntity(s);
        //此处相当于在Authorization里头添加Bear token参数信息
        post.addHeader(\"Authorization\", \"Bearer \" +assessToken);
        HttpResponse res = client.execute(post);
        String response1 = EntityUtils.toString(res.getEntity());
        if (res.getStatusLine()
                .getStatusCode() == HttpStatus.SC_OK) {
            // 返回json格式:
            String result = EntityUtils.toString(res.getEntity());
            jsonObject = JSONObject.parseObject(result);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return jsonObject;
}

2、使用RestTemplate请求

1、get请求

/**
** 入参 请求的url、响应体类型
*/
RestTemplate restTemplate=new RestTemplate();
    UriComponents
            uriComponents= UriComponentsBuilder.fromUriString(\"http://127.0.0.1:8080/user?name={name}\")
            .build()
            .expand(\"jpl\")
            .encode();
    URI uri=uriComponents.toUri();
    String body = restTemplate.getForEntity(uri, String.class).getBody();
/**
** 入参 请求的url、响应体类型、请求体的参数
*/
RestTemplate restTemplate=new RestTemplate();
        Map params=new HashMap<>();
        params.put(\"name\",\"dada\"); //
        ResponseEntity responseEntity = restTemplate.getForEntity(\"http://127.0.0.1:8080/user?name={name}\", String.class, params);

2、post请求

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

3、使用Feign请求

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

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.2.2.RELEASE</version>
</dependency>

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

@Configuration
public class FeignConfig implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        //添加token
        requestTemplate.header(\"token\", \"\");
    }
}

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 的功能较为复杂,需要手动实现请求拦截、响应拦截、请求体拦截、响应体拦截、验证和认证等功能,因此需要一定的编程经验

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 常用的Spring Boot调用外部接口方式实现数据交互 http://www.20zxx.cn/775018/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务