常用的Spring Boot調(diào)用外部接口方式實現(xiàn)數(shù)據(jù)交互
springboot調(diào)用外部接口常用的方式
在系統(tǒng)開發(fā)過程中,免不了要去調(diào)用第三方接口,springboot為我們提供了幾種調(diào)用第三方接口的方法
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();
// 要調(diào)用的接口url
String url = "http://127.0.0.1:8080 /submit";
HttpPost post = new HttpPost(url);
JSONObject jsonObject = null;
try {
//創(chuàng)建請求體并添加數(shù)據(jù)
StringEntity s = new StringEntity(date.toString());
//此處相當于在header里頭添加請求頭等參數(shù)
s.setContentType("application/json");
s.setContentEncoding("UTF-8");
post.setEntity(s);
//此處相當于在Authorization里頭添加Bear token參數(shù)信息
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請求
/**
** 入?yún)?請求的url、響應(yīng)體類型
*/
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();
/**
** 入?yún)?請求的url、響應(yīng)體類型、請求體的參數(shù)
*/
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();
//創(chuàng)建請求頭
HttpHeaders httpHeaders = new HttpHeaders();
//此處相當于在Authorization里頭添加Bear token參數(shù)信息
httpHeaders.add(HttpHeaders.AUTHORIZATION, "Bearer " + assessToken);
//此處相當于在header里頭添加content-type等參數(shù)
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);
//創(chuàng)建請求體并添加數(shù)據(jù)
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);//此處三個參數(shù)分別是請求地址、請求體以及返回參數(shù)類型
return forEntity.toString();
}
3、使用Feign請求
fegin常見咋微服務(wù)中使用,這里就不過多介紹
<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、小結(jié)
RestTemplate、HTTPClient 和 Feign 都是 Java 中用于發(fā)送 HTTP 請求的工具,它們都可以用于構(gòu)建 HTTPRestful API。以下是它們的優(yōu)缺點:
RESTTemplate
優(yōu)點:
RestTemplate 簡單易用,支持自定義配置,可以更好地滿足業(yè)務(wù)需求。
RestTemplate 可以處理 HTTP 請求和響應(yīng),實現(xiàn)對 HTTP 請求和響應(yīng)的攔截、代理、攔截等功能。
缺點:
RestTemplate 的功能較為復(fù)雜,需要手動實現(xiàn)請求體、請求頭、響應(yīng)體、響應(yīng)頭等自定義配置,因此需要一定的編程經(jīng)驗和技能。
RestTemplate 默認情況下使用 Apache HTTP 庫,因此在處理 HTTP 請求時,可能對某些業(yè)務(wù)場景不太友好,需要手動配置。
HTTPClient
優(yōu)點:
HTTPClient 簡單易用,支持多種 HTTP 庫,可以更好地滿足不同的業(yè)務(wù)需求。
HTTPClient 可以處理 HTTP 請求和響應(yīng),實現(xiàn)對 HTTP 請求和響應(yīng)的攔截、代理、攔截等功能。
缺點:
HTTPClient 默認情況下使用 Apache HTTP 庫,因此在處理 HTTP 請求時,可能對某些業(yè)務(wù)場景不太友好,需要手動配置。
HTTPClient 的性能可能不如 RestTemplate 。
Feign
優(yōu)點:
Feign 是 Java 中的 HTTP客戶端,可以支持多種 HTTP 庫,可以更好地滿足不同的業(yè)務(wù)需求。
Feign 可以實現(xiàn)自定義的請求攔截、響應(yīng)攔截、請求體攔截、響應(yīng)體攔截等功能,因此可以更好地滿足業(yè)務(wù)需求。
Feign 內(nèi)置了豐富的驗證和認證功能,可以支持自定義的驗證和認證規(guī)則。
缺點:
Feign 的功能較為復(fù)雜,需要手動實現(xiàn)請求攔截、響應(yīng)攔截、請求體攔截、響應(yīng)體攔截、驗證和認證等功能,因此需要一定的編程經(jīng)驗
到此這篇關(guān)于常用的Spring Boot調(diào)用外部接口方式實現(xiàn)數(shù)據(jù)交互的文章就介紹到這了,更多相關(guān)Spring Boot調(diào)用外部接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java及Android中常用鏈式調(diào)用寫法簡單示例
這篇文章主要介紹了Java及Android中常用鏈式調(diào)用寫法,結(jié)合實例形式分析了java編程中的鏈式調(diào)用概念、簡單使用方法及相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
淺談SpringCache與redis集成實現(xiàn)緩存解決方案
本篇文章主要介紹了淺談SpringCache與redis集成實現(xiàn)緩存解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12
SpringData Repository Bean方法定義規(guī)范代碼實例
這篇文章主要介紹了SpringData Repository Bean方法定義規(guī)范代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-08-08
使用jaxp進行dom解析_動力節(jié)點Java學院整理
這篇文章主要介紹了使用jaxp進行dom解析的相關(guān)資料,需要的朋友可以參考下2017-08-08

