最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

常用的Spring Boot調(diào)用外部接口方式實(shí)現(xiàn)數(shù)據(jù)交互

 更新時(shí)間:2023年04月18日 11:35:30   作者:陽(yáng)關(guān)的美好  
Spring Boot提供了多種調(diào)用外部接口的方式,可以方便地實(shí)現(xiàn)與其他系統(tǒng)的數(shù)據(jù)交互,提高系統(tǒng)的可擴(kuò)展性和數(shù)據(jù)共享能力,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧

springboot調(diào)用外部接口常用的方式

在系統(tǒng)開發(fā)過程中,免不了要去調(diào)用第三方接口,springboot為我們提供了幾種調(diào)用第三方接口的方法

1、使用原始httpClient請(qǐng)求

<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)建請(qǐng)求體并添加數(shù)據(jù)
        StringEntity s = new StringEntity(date.toString());
        //此處相當(dāng)于在header里頭添加請(qǐng)求頭等參數(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請(qǐng)求

1、get請(qǐng)求

/**
** 入?yún)?請(qǐng)求的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)?請(qǐng)求的url、響應(yīng)體類型、請(qǐ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請(qǐng)求

public String submit(String documentId){
    String assessToken="";
    RestTemplate restTemplate = new RestTemplate();
    //創(chuàng)建請(qǐ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)建請(qǐ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);//此處三個(gè)參數(shù)分別是請(qǐng)求地址、請(qǐng)求體以及返回參數(shù)類型
    return forEntity.toString();
}

3、使用Feign請(qǐng)求

fegin常見咋微服務(wù)中使用,這里就不過多介紹

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
    <version>1.2.2.RELEASE</version>
</dependency>

簡(jiǎn)單介紹一下如果使用feign遇到需要添加請(qǐng)求頭等信息時(shí),遇到重寫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 請(qǐng)求的工具,它們都可以用于構(gòu)建 HTTPRestful API。以下是它們的優(yōu)缺點(diǎn):

RESTTemplate

優(yōu)點(diǎn):

RestTemplate 簡(jiǎn)單易用,支持自定義配置,可以更好地滿足業(yè)務(wù)需求。

RestTemplate 可以處理 HTTP 請(qǐng)求和響應(yīng),實(shí)現(xiàn)對(duì) HTTP 請(qǐng)求和響應(yīng)的攔截、代理、攔截等功能。

缺點(diǎn):

RestTemplate 的功能較為復(fù)雜,需要手動(dòng)實(shí)現(xiàn)請(qǐng)求體、請(qǐng)求頭、響應(yīng)體、響應(yīng)頭等自定義配置,因此需要一定的編程經(jīng)驗(yàn)和技能。

RestTemplate 默認(rèn)情況下使用 Apache HTTP 庫(kù),因此在處理 HTTP 請(qǐng)求時(shí),可能對(duì)某些業(yè)務(wù)場(chǎng)景不太友好,需要手動(dòng)配置。

HTTPClient

優(yōu)點(diǎn):

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

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

缺點(diǎn):

HTTPClient 默認(rèn)情況下使用 Apache HTTP 庫(kù),因此在處理 HTTP 請(qǐng)求時(shí),可能對(duì)某些業(yè)務(wù)場(chǎng)景不太友好,需要手動(dòng)配置。

HTTPClient 的性能可能不如 RestTemplate 。

Feign

優(yōu)點(diǎn):

Feign 是 Java 中的 HTTP客戶端,可以支持多種 HTTP 庫(kù),可以更好地滿足不同的業(yè)務(wù)需求。

Feign 可以實(shí)現(xiàn)自定義的請(qǐng)求攔截、響應(yīng)攔截、請(qǐng)求體攔截、響應(yīng)體攔截等功能,因此可以更好地滿足業(yè)務(wù)需求。

Feign 內(nèi)置了豐富的驗(yàn)證和認(rèn)證功能,可以支持自定義的驗(yàn)證和認(rèn)證規(guī)則。

缺點(diǎn):

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

到此這篇關(guān)于常用的Spring Boot調(diào)用外部接口方式實(shí)現(xiàn)數(shù)據(jù)交互的文章就介紹到這了,更多相關(guān)Spring Boot調(diào)用外部接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 雙Token無感刷新機(jī)制實(shí)現(xiàn)方式

    雙Token無感刷新機(jī)制實(shí)現(xiàn)方式

    本文介紹了如何在Vue.js前端和Java后端實(shí)現(xiàn)雙Token的無感刷新機(jī)制,后端通過Jwt過濾器解析Token,前端在請(qǐng)求時(shí)攜帶Token并保存,當(dāng)Token過期時(shí),前端會(huì)自動(dòng)刷新并重新發(fā)送請(qǐng)求,實(shí)現(xiàn)無感刷新
    2025-03-03
  • Java及Android中常用鏈?zhǔn)秸{(diào)用寫法簡(jiǎn)單示例

    Java及Android中常用鏈?zhǔn)秸{(diào)用寫法簡(jiǎn)單示例

    這篇文章主要介紹了Java及Android中常用鏈?zhǔn)秸{(diào)用寫法,結(jié)合實(shí)例形式分析了java編程中的鏈?zhǔn)秸{(diào)用概念、簡(jiǎn)單使用方法及相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • SpringBoot使用Log4j過程詳解

    SpringBoot使用Log4j過程詳解

    這篇文章主要介紹了SpringBoot使用Log4j過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Mybatis-Plus 通用CRUD的詳細(xì)操作

    Mybatis-Plus 通用CRUD的詳細(xì)操作

    這篇文章主要介紹了Mybatis-Plus 通用CRUD的詳細(xì)操作,包括插入操作,更新操作及刪除操作等,針對(duì)每種操作通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • 新手入門了解ArrayList擴(kuò)容機(jī)制

    新手入門了解ArrayList擴(kuò)容機(jī)制

    這篇文章主要介紹了新手入門了解ArrayList擴(kuò)容機(jī)制,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java實(shí)現(xiàn)線性表的順序存儲(chǔ)

    Java實(shí)現(xiàn)線性表的順序存儲(chǔ)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)線性表的順序存儲(chǔ),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • 淺談SpringCache與redis集成實(shí)現(xiàn)緩存解決方案

    淺談SpringCache與redis集成實(shí)現(xiàn)緩存解決方案

    本篇文章主要介紹了淺談SpringCache與redis集成實(shí)現(xiàn)緩存解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • SpringData Repository Bean方法定義規(guī)范代碼實(shí)例

    SpringData Repository Bean方法定義規(guī)范代碼實(shí)例

    這篇文章主要介紹了SpringData Repository Bean方法定義規(guī)范代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 使用jaxp進(jìn)行dom解析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    使用jaxp進(jìn)行dom解析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了使用jaxp進(jìn)行dom解析的相關(guān)資料,需要的朋友可以參考下
    2017-08-08
  • 如何實(shí)現(xiàn)在IDEA中導(dǎo)入一個(gè)模塊

    如何實(shí)現(xiàn)在IDEA中導(dǎo)入一個(gè)模塊

    這篇文章主要介紹了如何實(shí)現(xiàn)在IDEA中導(dǎo)入一個(gè)模塊方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評(píng)論

海门市| 图木舒克市| 左云县| 新宁县| 惠东县| 黔西| 临夏县| 壶关县| 贺兰县| 曲松县| 大兴区| 汉中市| 佛山市| 普兰店市| 壶关县| 榕江县| 连州市| 莱西市| 上高县| 和平区| 遂溪县| 阿巴嘎旗| 镇原县| 南郑县| 句容市| 措勤县| 泗阳县| 华蓥市| 安平县| 咸宁市| 太保市| 宁海县| 玉树县| 镇江市| 黔西| 齐齐哈尔市| 伊宁县| 开原市| 莱阳市| 福贡县| 彰化市|