国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Http遠(yuǎn)程調(diào)用(feign客戶端通過POST傳遞FORM格式數(shù)據(jù))

這篇具有很好參考價(jià)值的文章主要介紹了Http遠(yuǎn)程調(diào)用(feign客戶端通過POST傳遞FORM格式數(shù)據(jù))。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

? ? ??feign實(shí)現(xiàn)http遠(yuǎn)程調(diào)用(正文)

??????解決方案:


在正式講解HTTP遠(yuǎn)程調(diào)用時(shí),我們先來了解一下缺省方法的定義。

寫在前面:

  • 缺省參數(shù)可傳可不傳,可以傳多個(gè)但他們必須是相同的類型
  • 每個(gè)方法中缺省參數(shù)只能定義一個(gè),并且只能在參數(shù)的最后定義;
  • 缺省參數(shù)可讀性比較差,而且它還可以被數(shù)組代替,開發(fā)中不建議使用,這里遇到了就簡單來了解一下;

????????缺省方法:定義N個(gè)相同類型的參數(shù)值,N >= 0;命名方式就是在參數(shù)前增加三個(gè)點(diǎn)省略符,如下例子可以幫我們更好的理解這一概念:

public class Student{
    public static void getStudent(int age, String name, String ...strB ){
        ...
    }
}

? ? ? ? 我們可以采用如下方式對缺省方法進(jìn)行調(diào)用:

public static void main(String[] args) {
    Student.getStudent(22,"Jimmy");                // 沒有
    Student.getStudent(22,"Jimmy","strB1");        // 1個(gè)
    Student.getStudent(22,"Jimmy","strB1","strB2");  // 多個(gè)
}

? ? ? ? 缺省參數(shù)值的遍歷(foreach),比較簡單就不過多闡述,直接看一下例子:

public class Student{
    public static void getStudent(int age, String name, String ...strB ){
        System.out.println("參數(shù)數(shù)量:" + strB.length);
        for (String str : strB) {
            System.out.println("參數(shù)值:" + str);
        }
    }
}

? ? ??feign實(shí)現(xiàn)http遠(yuǎn)程調(diào)用(正文)

????????首先我們需要引入所需要的依賴,這里值得注意的是,我們在引入依賴時(shí)所選用的springboot版本必須和springcloud保持對應(yīng),這里我是用的是springboot【2.2.6.RELEASE】+springcloud【Hoxton.SR12】進(jìn)行演示操作。

    <dependencyManagement>
       <dependencies>
           <!--SpringCloud依賴 -->
           <dependency>
               <groupId>org.springframework.cloud</groupId>
               <artifactId>spring-cloud-dependencies</artifactId>
               <version>Hoxton.SR12</version>
               <type>pom</type>
               <scope>import</scope>
           </dependency>
       </dependencies>
    </dependencyManagement>
    <dependencies>
        <!--openfeign跨服務(wù)調(diào)用-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!--openfeign底層使用ApacheHttpClient調(diào)用-->
        <dependency>
            <groupId>io.github.openfeign</groupId>
            <artifactId>feign-httpclient</artifactId>
        </dependency>
    </dependencies>

????????Feign支持通過GET和POST方法向服務(wù)傳遞參數(shù),我們先來簡單看一個(gè)例子:

????????這里@FeignClient中的name代表的是微服務(wù)名稱標(biāo)識,path是Spring Boot配置環(huán)境中的server.servlet.context-path=/test,用來標(biāo)明是哪個(gè)應(yīng)用下的微服務(wù)。

? ? ? ? 當(dāng)然這里也可以直接通過value來定義http://xx.xx.xxx.xx:xxxx來進(jìn)行遠(yuǎn)程調(diào)用。

@FeignClient(name = "service", path = "/test")
public interface Service {
    @GetMapping(value = "/get")
    TestMode echoGet(@RequestParam("parameter") String parameter);

    @PostMapping(value = "/post")
    TestMode echoPost(@RequestParam("parameter") String parameter);
}

? ? ? ? 頭疼的是我在采用上述@RequestParam("parameter")方式的時(shí)候,出現(xiàn)了下面的報(bào)錯(cuò):

GET "/test/post?parameter=POST%20%3A%20++%20plus%20sign%20contained%2C%20but%20it's%20gone%20unexpectedly."

????????剛開始我對這個(gè)報(bào)錯(cuò)比較迷惑,經(jīng)過查閱資料發(fā)現(xiàn)這種URL傳參的方式存在一定的風(fēng)險(xiǎn),因?yàn)樗?strong>URL長度是有限制的,如果我們傳遞的數(shù)據(jù)量很大,這時(shí)候就會出現(xiàn)上述錯(cuò)誤。

??????解決方案:

????????針對上述情況,我通過feign客戶端以form表單形式提交(POST)參數(shù)的方式進(jìn)行解決。

????????將某個(gè)feign客戶端方法定義如下 :

@Component
@FeignClient(value = "http://xx.xx.xxx.xx:xxxx")
public interface TestPaperClient {
    @RequestMapping(value = "/xxx",method = RequestMethod.POST,consumes = {"application/x-www-form-urlencoded"})
    TestPaper paperGeneration(Map<String, ?> map);
}

注意:

  • 使用注解 @RequestMapping 表明要使用POST方法,當(dāng)然這里也可以直接使用@PostMapping更加方便。
  • 注解中要添加屬性consumes = {"application/x-www-form-urlencoded"}。
  • 參數(shù)使用Map<String, ?>形式 (不再是@RequestParam("parameter"))。
  • Map<String, ?>中的key要和遠(yuǎn)程服務(wù)器端要求的參數(shù)名稱一致,value的類型要和遠(yuǎn)程服務(wù)器端要求的類型一致(可以借助下面serviceImpl中的代碼進(jìn)行理解),否則會出現(xiàn)HTTP 400 BAD_REQUEST錯(cuò)誤。

如下代碼可以輔助理解上面的文字說明:

? ? ? ? 注意:下面例子中有一個(gè)自己封裝的ApiResponse類,用來返回狀態(tài)碼和相關(guān)信息,大家可以根據(jù)自己的需求進(jìn)行封裝。

Http遠(yuǎn)程調(diào)用(feign客戶端通過POST傳遞FORM格式數(shù)據(jù))

遠(yuǎn)程服務(wù)器返回的內(nèi)容封裝為實(shí)體類:

@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class TestPaper {
    private String text;//服務(wù)器端要返回的內(nèi)容
}

Controller層代碼:

@RestController
@RequestMapping(value = "/feign")
public class TestPaperController {
    @Autowired
    TestPaperService testPaperService;
    @PostMapping("/DKQA")
    public ApiResponse<TestPaper> testPaper(@RequestParam("msg") String msg){
        return testPaperService.testPaper(msg);
    }
}

Service接口代碼:

public interface TestPaperService {
    ApiResponse<TestPaper> testPaper(String testPaper);
}

service接口實(shí)現(xiàn)類代碼:

@Service
public class TestPaperServiceImpl  implements TestPaperService {
    @Autowired
    private TestPaperClient testPaperClient;
    @Override
    public ApiResponse<TestPaper> testPaper(String testPaper) {
        Map<String,Object> map = new HashMap<>();
        map.put("msg",testPaper);
        return ApiResponse.data(testPaperClient.paperGeneration(map));
    }
}

????????基于這種方式傳遞參數(shù),我們就不用太擔(dān)心參數(shù)數(shù)據(jù)量過大。至此,遇到的問題已經(jīng)解決,后續(xù)有相關(guān)問題會再加以補(bǔ)充。文章來源地址http://www.zghlxwxcb.cn/news/detail-401742.html

到了這里,關(guān)于Http遠(yuǎn)程調(diào)用(feign客戶端通過POST傳遞FORM格式數(shù)據(jù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • QT實(shí)現(xiàn)客戶端服務(wù)器HTTP(get請求、post請求)

    QT實(shí)現(xiàn)客戶端服務(wù)器HTTP(get請求、post請求)

    服務(wù)器代碼如下: QtHttpForS.h QtHttpForS.cpp main.cpp QtHttpForS.ui 客戶端代碼: QtHttpForC.h QtHttpForC.cpp mian.cpp QtHttpForC.ui 程序運(yùn)行效果: GET請求: POST請求: POST請求使用postman測試: 注意: 可以發(fā)現(xiàn),在使用postman進(jìn)行POST請求發(fā)送時(shí),服務(wù)器接收到的請求頭與QTSocket的POST請求的請求頭

    2023年04月22日
    瀏覽(23)
  • 【Spring Cloud】如何把Feign默認(rèn)的HTTP客戶端URLConnection更換成支持連接池的Apache HttpClient或OKHttp

    【Spring Cloud】如何把Feign默認(rèn)的HTTP客戶端URLConnection更換成支持連接池的Apache HttpClient或OKHttp

    本次示例代碼的文件結(jié)構(gòu)如下圖所示。 Feign 發(fā)送 HTTP 請求時(shí),底層會使用到別的客戶端。下面列出常用的 3 種 HTTP 客戶端。 HTTP客戶端 特點(diǎn) URLConnection Feign 的默認(rèn)實(shí)現(xiàn),不支持連接池 Apache HttpClient 支持連接池 OKHttp 支持連接池 其中, URLConnection 是 Feign 默認(rèn)使用的 HTTP 客戶端

    2024年02月14日
    瀏覽(54)
  • SpringCloud系列篇:核心組件之聲明式HTTP客戶端組件【遠(yuǎn)程消費(fèi)】

    SpringCloud系列篇:核心組件之聲明式HTTP客戶端組件【遠(yuǎn)程消費(fèi)】

    接下來看看由輝輝所寫的關(guān)于SpringCloud的相關(guān)操作吧 目錄 ????Welcome Huihui\\\'s Code World ! !???? 一.?遠(yuǎn)程消費(fèi)組件是什么 二.?遠(yuǎn)程消費(fèi)組件的詳解 場景模擬 代碼實(shí)操 1.生產(chǎn)者 2.消費(fèi)者 3.復(fù)雜參數(shù)的處理 DTO 屬性賦值 ???????? 聲明式HTTP客戶端組件是一種用于簡化HTTP請求的

    2024年02月02日
    瀏覽(21)
  • 手機(jī)、電腦mqtt客戶端通過騰訊云服務(wù)器遠(yuǎn)程連接ESP32

    手機(jī)、電腦mqtt客戶端通過騰訊云服務(wù)器遠(yuǎn)程連接ESP32

    ????????本文將實(shí)現(xiàn): ????????1、esp32與騰訊云物聯(lián)網(wǎng)服務(wù)器通過mqtt協(xié)議通信 ????????2、電腦和手機(jī)客戶端通過mqtt與騰訊云相通信 ????????3、騰訊云服務(wù)器內(nèi)部消息轉(zhuǎn)發(fā),將手機(jī)、電腦發(fā)布的主題轉(zhuǎn)發(fā)給esp32訂閱,實(shí)現(xiàn)手機(jī)、電腦與esp32的遠(yuǎn)程通信。 ?????

    2024年02月11日
    瀏覽(25)
  • 十二、Feign客戶端整合Hystrix服務(wù)保護(hù)

    目錄 1、項(xiàng)目pom文件中引入feign客戶端依賴 2、編寫feign客戶端接口,并配置fallback回調(diào)方法的類 3、編寫controller,使用feign客戶端進(jìn)行RPC遠(yuǎn)程過程調(diào)用

    2024年02月05日
    瀏覽(21)
  • Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換

    Forest-聲明式HTTP客戶端框架-集成到SpringBoot實(shí)現(xiàn)調(diào)用第三方restful api并實(shí)現(xiàn)接口數(shù)據(jù)轉(zhuǎn)換

    聲明式HTTP客戶端API框架,讓Java發(fā)送HTTP/HTTPS請求不再難。它比OkHttp和HttpClient更高層, 是封裝調(diào)用第三方restful api client接口的好幫手,是retrofit和feign之外另一個(gè)選擇。 通過在接口上聲明注解的方式配置HTTP請求接口。 官網(wǎng): Forest ? 代碼地址: forest: 聲明式HTTP客戶端API框架,讓

    2024年02月04日
    瀏覽(25)
  • ESP32 HTTPS客戶端POST請求(跳過證書驗(yàn)證)

    ESP32 HTTPS客戶端POST請求(跳過證書驗(yàn)證)

    本文例程為ESP32 HTTPS客戶端POST請求 只有HTTPS請求部分,聯(lián)網(wǎng)部分省略默。。。 樂鑫ESP-IDF API參考文檔 函數(shù) esp_http_client_init 結(jié)構(gòu)體 constesp_http_client_config_t 此結(jié)構(gòu)體用于配置HTTP/HTTPS參數(shù) 設(shè)置HTTP/HTTPS請求方法 此接口可以手動(dòng)設(shè)置HTTP請求方式(可以覆蓋配置結(jié)構(gòu)體的設(shè)置) 設(shè)置

    2024年02月05日
    瀏覽(242)
  • http客戶端Fegin

    http客戶端Fegin

    代碼可讀性差,編程體驗(yàn)不統(tǒng)一 參數(shù)復(fù)雜URL難以維護(hù) Feign是聲明式的http客戶端(只需要將發(fā)http請求的信息寫出即可) ?主要基于SpringMvc的注解來聲明遠(yuǎn)程調(diào)用的信息: ?步驟: 1.引入依賴 2.添加EnableFeignClients注解 3.編寫FeignClient接口 4.使用FeigClient中定義的方法代替RestTempl

    2024年02月09日
    瀏覽(16)
  • 【W(wǎng)ebClient】客戶端HTTP 超時(shí)配置

    提示:文章寫完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 1、項(xiàng)目升級到Springboot3,使用WebFlux自帶的WebClient作為HTTP客戶端 2、接口類客戶端方式調(diào)用外部服務(wù),默認(rèn)超時(shí)5S 3、需根據(jù)業(yè)務(wù)動(dòng)態(tài)修改超時(shí)時(shí)間,如60S 報(bào)錯(cuò)如下: java.lang.IllegalStateException: Timeout on bl

    2024年02月12日
    瀏覽(35)
  • Spring Cloud Feign調(diào)用異常:feign.RetryableException: connect timed out executing POST http://xxx

    本機(jī)JUnit單元測試時(shí),調(diào)用部署在開發(fā)環(huán)境(Centos7)的服務(wù)時(shí),報(bào)feign.RetryableException: connect timed out 直接訪問服務(wù)地址時(shí),提示網(wǎng)絡(luò)無法訪問 http://192.168.1.15:7002/comDictionary/getDictionaryById?dictionaryId=GIVE_LOGIN 發(fā)現(xiàn)端口沒有打開。需要打開linux防火墻的端口 firewall-cmd --permanent --zon

    2024年03月22日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包