溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

SpringBoot怎么調(diào)用外部接口實現(xiàn)數(shù)據(jù)交互

發(fā)布時間:2023-04-18 14:48:43 來源:億速云 閱讀:106 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“SpringBoot怎么調(diào)用外部接口實現(xiàn)數(shù)據(jù)交互”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“SpringBoot怎么調(diào)用外部接口實現(xiàn)數(shù)據(jù)交互”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識吧。

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());
        //此處相當(dāng)于在header里頭添加請求頭等參數(shù)
        s.setContentType("application/json");
        s.setContentEncoding("UTF-8");
        post.setEntity(s);
        //此處相當(dāng)于在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)?nbsp;請求的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)?nbsp;請求的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();
    //此處相當(dāng)于在Authorization里頭添加Bear token參數(shù)信息
    httpHeaders.add(HttpHeaders.AUTHORIZATION, "Bearer " + assessToken);
    //此處相當(dāng)于在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 默認(rèn)情況下使用 Apache HTTP 庫,因此在處理 HTTP 請求時,可能對某些業(yè)務(wù)場景不太友好,需要手動配置。

HTTPClient

優(yōu)點:

HTTPClient 簡單易用,支持多種 HTTP 庫,可以更好地滿足不同的業(yè)務(wù)需求。

HTTPClient 可以處理 HTTP 請求和響應(yīng),實現(xiàn)對 HTTP 請求和響應(yīng)的攔截、代理、攔截等功能。

缺點:

HTTPClient 默認(rèn)情況下使用 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)置了豐富的驗證和認(rèn)證功能,可以支持自定義的驗證和認(rèn)證規(guī)則。

缺點:

Feign 的功能較為復(fù)雜,需要手動實現(xiàn)請求攔截、響應(yīng)攔截、請求體攔截、響應(yīng)體攔截、驗證和認(rèn)證等功能,因此需要一定的編程經(jīng)驗

讀到這里,這篇“SpringBoot怎么調(diào)用外部接口實現(xiàn)數(shù)據(jù)交互”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI