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

OpenFeign設(shè)置header

這篇具有很好參考價(jià)值的文章主要介紹了OpenFeign設(shè)置header。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

設(shè)置Feign的Header信息(五種方式)

概述

在微服務(wù)間使用Feign進(jìn)行遠(yuǎn)程調(diào)用時(shí)需要在 header 中添加信息,那么 springcloud open feign 如何設(shè)置 header 呢?有5種方式可以設(shè)置請(qǐng)求頭信息:

  • 在@RequestMapping注解里添加headers屬性

  • 在方法參數(shù)前面添加@RequestHeader注解

  • 在方法或者類上添加@Headers的注解

  • 在方法參數(shù)前面添加@HeaderMap注解

  • 實(shí)現(xiàn)RequestInterceptor接口

示例說(shuō)明

由于Feign是完全支持Spring MVC注解的, 所以推薦使用前兩種Feign設(shè)置header的方式, 即: Spring MVC中使用注解設(shè)置header.

1. 在@RequestMapping注解里添加headers屬性

在application.yml中配置

app.secret: appSecretVal

編寫(xiě)feignClient

@PostMapping(value ="/book/api", headers ={"Content-Type=application/json;charset=UTF-8","App-Secret=${app.secret}"})
voidsaveBook(@RequestBodyBookDto condition);

2. 在方法參數(shù)前面添加@RequestHeader注解

  • 設(shè)置單個(gè)header屬性

@GetMapping(value ="/getStuDetail")
public StudentVo getStudentDetail(@RequestBodyStudentDto condition,@RequestHeader("Authorization")String token);
  • 設(shè)置多個(gè)header屬性

@PostMapping(value ="/card")
public CardVo createCard(@RequestBodyCardDto condition,@RequestHeaderMultiValueMap<String,String> headers);
查看源碼 org.springframework.web.bind.annotation.RequestHeader 說(shuō)明: If the method parameter is Map<String, String>, MultiValueMap<String, String>, or HttpHeaders then the map is populated with all header names and values.

3. 在方法或者類上添加@Headers的注解

3.1使用feign自帶契約
@Configuration
public class Foo Configuration{
? ? @Bean
? ? public Contract feignContract(){
? ? returnnew feign.Contract.Default();
? ? }
}

FeignClient使用@RequestLine注解, 而未配置feign自帶契約Contract時(shí), @Headers不會(huì)起作用, 而且啟動(dòng)項(xiàng)目會(huì)報(bào)錯(cuò):

Method xxx not annotated with HTTP method type (ex. GET, POST)

查閱官方文檔,feign 默認(rèn)使用的是spring mvc 注解(就是RequestMapping 之類的) ,所以需要通過(guò)新增一個(gè)配置類來(lái)修改其契約 ,即可可以解決該問(wèn)題了。

@RequestLine is a core Feign annotation, but you are using the SpringCloud@FeignClientwhichusesSpring MVC annotations.
3.2配置@Headers注解
@FeignClient(url ="${user.api.url}", name ="user", configuration =FooConfiguration.class)
public interface UserFeignClient{
? ? @RequestLine("GET /simple/{id}")
? ? @Headers({"Content-Type: application/json;charset=UTF-8","Authorization: {token}"})
? ? public User findById(@Param("id")String id,@Param("token")String token);
}

使用@Param可以動(dòng)態(tài)配置Header屬性

網(wǎng)上很多在說(shuō) @Headers不起作用,其實(shí)@Headers注解沒(méi)有生效的原因是:官方的Contract沒(méi)有生效

4. 在方法參數(shù)前面添加@HeaderMap注解

4.1 使用feign自帶契約

同上

4.2 配置@HeaderMap注解
@FeignClient(url ="${user.api.url}", name ="user", configuration =FooConfiguration.class)
? ? publicinterfaceUserFeignClient{
? ? @RequestLine("GET /simple/{id}")
? ? publicUserfindById(@Param("id")String id,@HeaderMapHttpHeaders headers);
}

5. 實(shí)現(xiàn)RequestInterceptor接口

值得注意的一點(diǎn)是:如果FeignRequestInterceptor注入到spring容器的話就會(huì)全局生效, 就是說(shuō)即使在沒(méi)有指定configuration屬性的FeignClient該配置也會(huì)生效, 為什么呢?有興趣的請(qǐng)看源碼分析.

配置@Component或@Service 或 @Configuration 就可以將該配置注入spring容器中, 即可實(shí)現(xiàn)全局配置, 從而該項(xiàng)目中的所有FeignClient的feign接口都可以使用該配置.

如果只想給指定FeignClient的feign接口使用該配置, 請(qǐng)勿將該類配置注入spring中.文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-718781.html

@Configuration
public class FeignRequestInterceptor implements RequestInterceptor{
? ? @Override
? ? public void apply(RequestTemplate template){
? ?         template.header(HttpHeaders.AUTHORIZATION,"tokenVal");
? ? ? ? }
}

到了這里,關(guān)于OpenFeign設(shè)置header的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【Spring Boot】請(qǐng)求參數(shù)傳json對(duì)象,后端采用(pojo)CRUD案例(102)

    【Spring Boot】請(qǐng)求參數(shù)傳json對(duì)象,后端采用(pojo)CRUD案例(102)

    請(qǐng)求參數(shù)傳json對(duì)象,后端采用(pojo)接收的前提條件: 1.pom.xml文件加入坐標(biāo)依賴:jackson-databind 2.Spring Boot 的啟動(dòng)類加注解:@EnableWebMvc 3.Spring Boot 的Controller接受參數(shù)采用:@RequestBody 4.postman入?yún)⒉捎胘son格式 1.pom.xml文件加入坐標(biāo): 2.Spring Boot 啟動(dòng)類:加注解:@EnableWebMvc POJO類

    2024年02月14日
    瀏覽(16)
  • Java中GET請(qǐng)求與POST請(qǐng)求,前端傳參與后端接收實(shí)例

    Java中GET請(qǐng)求與POST請(qǐng)求,前端傳參與后端接收實(shí)例

    此示例以代碼方式展現(xiàn),可直接結(jié)合controller層每個(gè)接口上方注釋與其接口傳遞參數(shù)方式理解! 前端傳參直接就以apiPost工具來(lái)代替 apiPost調(diào)用后端接口幾種方式 ? 代碼: ?controller層: service層: mapper層: xml:

    2024年02月07日
    瀏覽(31)
  • Chrome瀏覽器設(shè)置header請(qǐng)求 響應(yīng)頭 使用 Chrome ModHeader插件,添加/修改/刪除HTTP請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭

    Chrome瀏覽器設(shè)置header請(qǐng)求 響應(yīng)頭 使用 Chrome ModHeader插件,添加/修改/刪除HTTP請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭

    ModHeader插件支持添加/修改/刪除請(qǐng)求標(biāo)頭和響應(yīng)標(biāo)頭,并可以啟用基于URL /資源類型的標(biāo)題修改。 添加擴(kuò)展程序,并且開(kāi)啟使用 在瀏覽器右上角的擴(kuò)展程序中,確認(rèn)ModHeader是否已經(jīng)適用 點(diǎn)擊modHeader,開(kāi)啟 在窗口的+號(hào)上,可以添加其他屬性。進(jìn)行修改,刪除,置空 修改heade

    2024年02月11日
    瀏覽(372)
  • Java設(shè)置后端分頁(yè)

    getPages(Integer.parseInt(String.valueOf(page.getCurrent())),Integer.parseInt(String.valueOf(page.getSize())),dtos); /** * 對(duì)list分頁(yè) * @param currentPage * @param pageSize * @param list * @return */ private IPage getPages(Integer currentPage, Integer pageSize, List list) { IPage page = new Page(); if(list == null){ return null; } int size = list.size();

    2024年02月06日
    瀏覽(18)
  • Java后端和前端傳遞的請(qǐng)求參數(shù)的三種類型

    在 HTTP 請(qǐng)求中,常見(jiàn)的請(qǐng)求參數(shù)類型有三種:`application/x-www-form-urlencoded`、`multipart/form-data` 和 `application/json`(通常用于 `raw` 類型)。這三種類型主要指的是請(qǐng)求體中的數(shù)據(jù)格式,其中包括參數(shù)的傳遞方式和編碼。 1. **`application/x-www-form-urlencoded`:** ? ?- 這是默認(rèn)的編碼類型

    2024年02月02日
    瀏覽(28)
  • Java后端07(Spring)

    ?涉及的設(shè)計(jì)模式:?jiǎn)卫J剑?jiǎn)單工廠模式,代理模式,觀察者模式,反射,注解。。。。。 ?在傳統(tǒng)模式下,對(duì)象的創(chuàng)建和賦值,都是由開(kāi)發(fā)者自己手動(dòng)完成,事實(shí)情況下,開(kāi)發(fā)者只關(guān)心如何獲取賦值好的對(duì)象,但是并不希望自己手動(dòng)進(jìn)行創(chuàng)建對(duì)象和賦值的事情(sprin

    2024年02月13日
    瀏覽(25)
  • SpringCloud入門(mén)(微服務(wù)調(diào)用 OpenFeign)——從RestTemplate到OpenFeign & OpenFeign的相關(guān)配置 & 源碼的分析和請(qǐng)求流程拆解

    SpringCloud入門(mén)(微服務(wù)調(diào)用 OpenFeign)——從RestTemplate到OpenFeign & OpenFeign的相關(guān)配置 & 源碼的分析和請(qǐng)求流程拆解

    在之前的博客中,我們介紹了RestTemplate的使用,博客文章如下連接。但是在使用RestTemplate的時(shí)候,需要把生產(chǎn)者的路徑拼出來(lái),非常繁瑣,另外參數(shù)的傳遞的也比較繁瑣,解決方案就是使用openFeign。 SpringCloud入門(mén)(RestTemplate + Ribbon)——微服務(wù)調(diào)用的方式 RestTemplate的使用 使

    2024年04月11日
    瀏覽(34)
  • 前端向Java后端請(qǐng)求blob、arraybuffer類型的數(shù)據(jù)流

    前端需要獲取后端音頻文件,但遇到跨域問(wèn)題,不能直接使用url獲取,需求必須使用流將文件傳到前端。因此,考慮Java后端讀取音頻文件,然后向前端發(fā)送數(shù)據(jù)流,前端按后端發(fā)送類型將數(shù)據(jù)接收,并合成其格式文件。 引入axios.min.js文件 其中,responseType:‘a(chǎn)rraybuffer’,寫(xiě)成

    2024年02月13日
    瀏覽(25)
  • CRM項(xiàng)目為新增用戶設(shè)置對(duì)應(yīng)的前端校驗(yàn)規(guī)則并發(fā)送Axios請(qǐng)求到后端將表單數(shù)據(jù)提交用戶信息------CRM項(xiàng)目

    template ? ? el-button type=\\\"primary\\\" @click=\\\"addUser()\\\"新增用戶/el-button ? ? el-button type=\\\"danger\\\"批量刪除/el-button ? ? el-table ? ? ? ? :data=\\\"userList\\\" ? ? ? ? style=\\\"width: 100%\\\" ? ? ? ? @selection-change=\\\"handleSelectionChange\\\" ? ? ? ? ? ? !-- 復(fù)選框 ? ?-- ? ? ? ? el-table-column type=\\\"selection\\\" width=\\\"33%\\\"

    2024年02月19日
    瀏覽(24)
  • Java后端07(Spring未完成)

    ?涉及的設(shè)計(jì)模式:?jiǎn)卫J?,?jiǎn)單工廠模式,代理模式,觀察者模式,反射,注解。。。。。 ?在傳統(tǒng)模式下,對(duì)象的創(chuàng)建和賦值,都是由開(kāi)發(fā)者自己手動(dòng)完成,事實(shí)情況下,開(kāi)發(fā)者只關(guān)心如何獲取賦值好的對(duì)象,但是并不希望自己手動(dòng)進(jìn)行創(chuàng)建對(duì)象和賦值的事情(sprin

    2024年02月14日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包