欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud 如何使用feign時(shí)的復(fù)雜參數(shù)傳遞

 更新時(shí)間:2021年07月09日 10:02:38   作者:未完成交響曲-KyleWang  
這篇文章主要介紹了SpringCloud 如何使用feign時(shí)的復(fù)雜參數(shù)傳遞方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Feign傳參注意

最近在用SpringCloud嘗試重構(gòu)以前的項(xiàng)目,使用Feign客戶端組件來調(diào)用微服務(wù),經(jīng)常出現(xiàn)參數(shù)傳不過去變成null的問題,網(wǎng)上查了一下發(fā)現(xiàn)feign在參數(shù)上的使用還是有一定的限制的,主要是要注意:

1. 當(dāng)參數(shù)比較復(fù)雜時(shí),feign即使聲明為get請求也會強(qiáng)行使用post請求

2. 不支持@GetMapping類似注解聲明請求,需使用

@RequestMapping(value = "url",method = RequestMethod.GET)

3. 使用@RequestParam注解時(shí)必須要在后面加上參數(shù)名

寫了一個(gè)簡單案例,同時(shí)傳輸一個(gè)對象和一個(gè)字符串作為請求參數(shù),主要關(guān)注參數(shù)的聲明,其余比如eureka和feign的依賴和配置和后續(xù)使用相關(guān)的知識請另行查閱。僅供參考

服務(wù)端(生產(chǎn)者)

準(zhǔn)備:

1. 已經(jīng)配置將服務(wù)注冊在eureka,服務(wù)名為“item-service”

2. service層和dao層已經(jīng)實(shí)現(xiàn)好了

邏輯:ItemController接收參數(shù),調(diào)用service層,service中為商品Item對象添加詳情desc,然后調(diào)用dao保存Item對象,返回Result結(jié)果封裝對象

@RestController
public class ItemController { 
    @Autowired
    private ItemService itemService;
 
    /**
     * 添加
     * @param item
     * @param desc
     * @return
     */
    @RequestMapping("/item/save")
    public Result addItem(@RequestBody Item item, @RequestParam("desc") String desc){
        return itemService.addItem(item, desc);
    }
}

客戶端(消費(fèi)者)

準(zhǔn)備: 已經(jīng)配置注冊到eureka

邏輯:

聲明ItemFeignClient調(diào)用eureka上名為"item-service"的服務(wù),返回Result對象

使用Post請求,傳遞兩個(gè)參數(shù):

1. TbItem對象,使用@RequestBody來聲明

2. String字符串,使用@RequestParam("xxx")來聲明

@FeignClient("item-service")
public interface ItemFeignClient {
 
    /**
     * 添加
     * @param item
     * @param desc
     * @return
     */
    @RequestMapping(value = "/item/save",method = RequestMethod.POST)
    Result addItem(@RequestBody TbItem item, @RequestParam("desc") String desc); 

SpringCloud feign參數(shù)傳遞問題記錄

對象傳遞 @RequestBody(required = false)

不支持多對象傳遞,至少我目前發(fā)現(xiàn)是這樣的,如有錯(cuò)誤或者改進(jìn)的方法請?zhí)岢?/p>

API層

@FeignClient(value = "transaction-feign")
    public interface TransactionApiService {
        /**
         * 交易流水查詢 可分頁
         *
         * @param param
         * @param pageNum
         * @param pageSize
         * @return
         */
        @RequestMapping(value = "/dealflow/list", method = RequestMethod.POST)
        JsonResultDO dealFlowList(@RequestBody(required = false) DealFlowDo param
                , @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum
                , @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize);
    }

接口層

/**
 * 交易流水查詢 可分頁
 * @return JsonResultDO
 */
@RequestMapping(value = "/dealflow/list", method = RequestMethod.POST)
public Page<DealFlowDo> dealFlowList(@RequestBody(required = false) DealFlowDo param
        , @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum
        , @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize
        , @RequestParam(value = "userId") Long userId){
    JsonResultDO resultDO = new JsonResultDO();
    Page<DealFlowDo> page = (Page<DealFlowDo> )dealFlowService.queryDealFlowList(userId, param, pageNum, pageSize);
    return page;
}

單個(gè)或多個(gè)參數(shù)傳遞 @RequestParam/@PathVariable/***

   /**
     * 根據(jù)商戶號獲取商戶信息
     *
     * @param merNo
     * @return
     */
    @RequestMapping(value = "/merchant/{merNo}", method = RequestMethod.GET)
    String getMerchantByMerNo(@PathVariable("merNo") String merNo);

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java中 spring 定時(shí)任務(wù) 實(shí)現(xiàn)代碼

    java中 spring 定時(shí)任務(wù) 實(shí)現(xiàn)代碼

    java中 spring 定時(shí)任務(wù) 實(shí)現(xiàn)代碼,需要的朋友可以參考一下
    2013-03-03
  • 如何用Springboot Admin監(jiān)控你的微服務(wù)應(yīng)用

    如何用Springboot Admin監(jiān)控你的微服務(wù)應(yīng)用

    這篇文章主要介紹了如何用Springboot Admin監(jiān)控你的微服務(wù)應(yīng)用,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下。
    2021-01-01
  • SpringBoot如何進(jìn)行對象復(fù)制的實(shí)踐

    SpringBoot如何進(jìn)行對象復(fù)制的實(shí)踐

    本文主要介紹了SpringBoot 如何進(jìn)行對象復(fù)制,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • SpringBoot?JavaMailSender發(fā)送郵件功能(實(shí)例詳解)

    SpringBoot?JavaMailSender發(fā)送郵件功能(實(shí)例詳解)

    JavaMailSender是Spring提供的,非常好用的,實(shí)現(xiàn)郵件發(fā)送的接口 ,這篇文章主要介紹了SpringBoot?JavaMailSender發(fā)送郵件功能,需要的朋友可以參考下
    2024-03-03
  • 舉例講解設(shè)計(jì)模式中的訪問者模式在Java編程中的運(yùn)用

    舉例講解設(shè)計(jì)模式中的訪問者模式在Java編程中的運(yùn)用

    這篇文章主要介紹了舉例講解設(shè)計(jì)模式中的訪問者模式在Java編程中的運(yùn)用,訪問者模式是一種將算法與對象結(jié)構(gòu)分離的軟件設(shè)計(jì)模式,需要的朋友可以參考下
    2016-05-05
  • 最新評論