栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何在后端去访问第三方API

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在后端去访问第三方API

    在后端开发中,我们除了编写供前端调用的接口外,有时我们在后端也会去调用第三方接口实现业务处理,那我们如何去调用第三方接口呢?

    我们都知道http包含头部和body,因此我们需要去模仿构造一个header和body,那在开发中有什么快捷的方式实现嘛?

  • 首先构造http头部
HttpHeaders httpHeaders = new HttpHeaders();

    其中HttpHeaders()属于Spring框架—import org.springframework.http.HttpHeaders;如下是HttpHeaders的继承实现图,共实现了接口Serializable和MultiValueMap,最上的接口是Map,因此大家都很明白http中header就是key-value组合出来的。

    其中Serializable是序列化,即对象的寿命通常随着生成该对象的程序的终止而终止,有时候需要把在内存中的各种对象的状态(也就是实例变量,不是方法)保存下来,并且可以在需要时再将对象恢复。为什么需要序列化呢?因为我们的对象是需要在网络中进行传播。

图一 `HttpHeaders`的继承实现图

     建立头部之后就可以设置http本身具有的很多参数:比如设置数据提交的类型。

MediaType type = MediaType.parseMediaType("application/x-www-form-urlencoded");
httpHeaders.setContentType(type);

之后就是构造body啦

  • 构造body

    对于简单的map类型的body构造很容易,我们只需要建立一个map,之后将要传参的数据put到map中即可;

当我们的body中只有这条数据的时候,可以实现如下的转换。

{
    "serviceUrl": "/v1/device/music/resource/set"
}
LinkedMultiValueMap map = new LinkedMultiValueMap<>();
map.add("serviceUrl", "/v1/device/music/resource/set");

    当我们的body数据比较复杂的时候,比如:

{
    "header": {

    },
    "payload": {
        "grantType": "tvs",
        "refreshToken": "refreshToken"
    }
}

这时候我们可以对于编写一个dto:

import lombok.Data;

@Data
public class RefreshTokenReqDto {


    Header header;
    PayLoad payLoad;


    @Data
    public static class Header{
	
    }

    @Data
    public static class PayLoad{
        String grantType;
        String refreshToken;
    }
}

在构造body的时候使用set的方式插入数据,并把数据转化:

RefreshTokenReqDto refreshTokenReqDto = new RefreshTokenReqDto();
RefreshTokenReqDto.PayLoad payLoad = new RefreshTokenReqDto.PayLoad();
payLoad.setRefreshToken(refreshToken);
payLoad.setGrantType("refresh_token");
// 插入数据
refreshTokenReqDto.setPayLoad(payLoad);

//类型转化
String json = JacksonUtil.bean2Json(refreshTokenReqDto);

当header和body构造好了之后,就是两者的组合啦。

  • 组合与访问
HttpEntity stringHttpEntity = new HttpEntity<>(json, httpHeaders);
ResponseEntity responseEntity = restTemplate.postForEntity(tokenUrl, stringHttpEntity, String.class);

    如上所示,json或者map和httpHeaders构造成一个HttpEntity,然后就利用了restTemplate进行第三方接口访问,如上使用POST方式进行访问,填入url,HTTPEntity,返回的类型。对responseEntity数据进行打印可知,返回的有效数据是放在responseEntity.getBody()中。

其中使用RestTemplate访问链接的方式有很多种,大家可以去探索。

  • 结束语

responseEntity数据进行打印可知,返回的有效数据是放在responseEntity.getBody()中。

其中使用RestTemplate访问链接的方式有很多种,大家可以去探索。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/933143.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号