• 总结一下Feign的知识点


    一、什么是OpenFeign

    OpenFeign目前是Spring Cloud二级子项目。平时所说的Feign指的是Netflix下的Feign。
    它是一种申明式、模板化的HTTP客户端,使用时好像在写控制器,代码写在接口中,在声明方法上添加SpringMVC注解或者声明的参数上添加SpringMVC注解就可以完成调用远程的控制方法。

    二、OpenFeign远程调用的基本语法

    1、无参方法的的远程调用

    package com.lxh.service;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @FeignClient("USER-SERVICE")
    public interface FeignService {
        /**
         * 方法要求:
         *  返回参数:和远程方法对应(其实能转换的话不对应也可以)
         *  参数:要与远程方法一致
         *  方法名: 随意
         *  请求方式:要与远程方法一致
         *  请求路径:远程接口路径
         */
         @GetMapping("/hello")
         String callServiceHello();
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    2、普通表单远程调用

        /**
         * 通过@Requstparam注解传递表单参数,如果变量名和远程方法一致可以不写name,
         *否则就得这样写@Requstparam("userName")
         */
        @PostMapping("/printUserNameAndPassword")
        String callUserServicePrintUserNameAndPassword(@RequestParam("userName") 
                                                       String username,
                                                       @RequestParam 
                                                       String password);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、restful参数传递远程调用

    @GetMapping("/restful/{userName}/{age}")
    String callUserRestful(@PathVariable String userName, @PathVariable Integer age);
    
    • 1
    • 2

    4、传递实体参数的远程方法调用

        /**
         * 隐式的添加了@ResquestBody注解,Feign中最多只能有一个不加注解的参数
         */
        @PostMapping("/entityParam")
        User callEntityParam(User user);
    
    • 1
    • 2
    • 3
    • 4
    • 5

    三、OpenFeign通讯优化

    1、gzip:

    • 概念

    数据格式,采用deflate格式压缩。

    • 作用

    网络数据压缩后实际上降低了网络传输的字节,可以加快网页加载速度。
    另外搜索引擎直接抓取gzip文件比直接抓取普通文件更快。

    2、Http请求中关于压缩传输协议的规定

    ![image.png](https://img-blog.csdnimg.cn/img_convert/d67efffafd7cca733f427805c683e56d.png#clientId=u6bb12d85-4595-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=185&id=uc61105ed&margin=[object Object]&name=image.png&originHeight=185&originWidth=924&originalType=binary&ratio=1&rotation=0&showTitle=false&size=55856&status=done&style=none&taskId=ubd108ac3-9ed8-4a01-91cc-2456bb2994a&title=&width=924)

    3、OpenFiegn运行gzip压缩

    只影响到微服务调用之间的调用的压缩数据传输,不影响浏览器和ApplicationClient的传输。

    4、配置OpenFiegn请求-应答gzip压缩

    # 开启请求gzip
    compression.request.enabled=true
    # 设置支持gzip的请求、响应类型(MIME)
    compression.request.mime-types=text/xml,application/xml,application/json
    # 配置启动压缩的最小阈值,默认2048
    compression.request.min-request-size=2048
    # 开启响应gzip
    compression.response.enabled=true
    # 配置gzip响应解压
    compression.response.useGzipDecoder=true。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    Java中如何实现文件预览的功能
    C++ std::ref函数的三大应用场景
    数组对象(下)
    Spark SQL自定义collect_list分组排序
    思腾云计算
    人工智能知识全面讲解:自然语言处理概述
    STM32:TTL串口调试
    LeetCode 958. 二叉树的完全性校验
    Herodotus——无需bridge借助Storage proof实现的以太坊跨层数据访问
    dubbo以xml方式操作和新版dubbo-admin安装
  • 原文地址:https://blog.csdn.net/qq_34368334/article/details/126454540