在后端开发中,我们除了编写供前端调用的接口外,有时我们在后端也会去调用第三方接口实现业务处理,那我们如何去调用第三方接口呢?
我们都知道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
是序列化,即对象的寿命通常随着生成该对象的程序的终止而终止,有时候需要把在内存中的各种对象的状态(也就是实例变量,不是方法)保存下来,并且可以在需要时再将对象恢复。为什么需要序列化呢?因为我们的对象是需要在网络中进行传播。

建立头部之后就可以设置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<Object, Object> 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<String> stringHttpEntity = new HttpEntity<>(json, httpHeaders);
ResponseEntity<String> responseEntity = restTemplate.postForEntity(tokenUrl, stringHttpEntity, String.class);
如上所示,json
或者map
和httpHeaders
构造成一个HttpEntity
,然后就利用了restTemplate
进行第三方接口访问,如上使用POST
方式进行访问,填入url
,HTTPEntity
,返回的类型。对responseEntity
数据进行打印可知,返回的有效数据是放在responseEntity.getBody()
中。
其中使用RestTemplate
访问链接的方式有很多种,大家可以去探索。
-
结束语
responseEntity
数据进行打印可知,返回的有效数据是放在responseEntity.getBody()
中。
其中使用RestTemplate
访问链接的方式有很多种,大家可以去探索。
原文始发于微信公众号(CodeJames):如何在后端去访问第三方API
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/148260.html