您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“SpringBoot怎么調用外部接口實現數據交互”,內容詳細,步驟清晰,細節處理妥當,希望這篇“SpringBoot怎么調用外部接口實現數據交互”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
在系統開發過程中,免不了要去調用第三方接口,springboot為我們提供了幾種調用第三方接口的方法
<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; }
/** ** 入參 請求的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);
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(); }
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", ""); } }
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怎么調用外部接口實現數據交互”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。