• 小D课堂


    笔记


    5、微服务调用方式之feign 实战 订单调用商品服务
        简介:改造电商项目 订单服务 调用商品服务获取商品信息
            Feign: 伪RPC客户端(本质还是用http)
            官方文档: https://cloud.spring.io/spring-cloud-openfeign/


            1、使用feign步骤讲解(新旧版本依赖名称不一样)
                加入依赖
                     <dependency>
                        <groupId>org.springframework.cloud</groupId>
                        <artifactId>spring-cloud-starter-openfeign</artifactId>
                    </dependency>
                启动类增加@EnableFeignClients
                增加一个接口 并@FeignClient(name="product-service")

            2、编码实战


            3、注意点:
                1、路径
                2、Http方法必须对应
                3、使用requestBody,应该使用@PostMapping
                4、多个参数的时候,通过@RequestParam("id") int id)方式调用

    开始

    feign是一个发http请求的客户端。从order service发送请求到Product service
    建议大家去看官方文档:官方文档: https://cloud.spring.io/spring-cloud-openfeign/

    首先需要加依赖的包

    启动类加注解

    下面ribbon的方法可删可不删。这里先保留着

    service下新增ProductClient。他的类形式Interface接口类

    增加注解。里面的name的值就是调用的服务的名称



    product的服务启动两个一个 8772 一个8773.

    看到注册中心启动了两个服务

    调用client

    调用client里面的方法。获取到的是json字符串。

    需要一个json工具类。新建utils包然后新建JsonUtils类

    spring默认的是用jackson这个包解析json。注意这些都是jackson这个包下的。注意这里定义的ObjectMapper用了final修饰

    解析json的字符串返回一个JsonNode对象

    在这里我们断点调试一下

    请求到的数据


    JsonNode的数据格式

    在jsonNode里面获取json属性的值,分别get name 的值和get 里面的price的值

    发送请求




    注意事项


    这里也可以使用RequestMapping不过要指定value和method


    多个参数的时候,通过@RequestParam("id") int id)方式调用。
    参数一定要和调用的product的方法的参数保持一致

    如果product的服务参数使用了requestBody那么orderService上面的注解一定要使用postMapping了。因为requestBody接收的就是post过来的参数。这里必须用PostMapping来修饰了

    复杂的调用可以百度一下找对应的文章看。

  • 相关阅读:
    log4net preserveLogFileNameExtension 和 watch
    BootStrap自带的图标
    git fetch批处理,遍历一个文件夹下的所有子目录,执行git fetch --all
    Recommended Settings for Tracing and Message Logging
    蜗牛—JSONJ学习ava转变
    Do you master on array in C ?
    全面推行使用智能指针的权利
    2014/08/23——OJ出现waiting...
    在Windows通过使用MinGW静态编译Assimp
    Ubuntu12.04password正确 入口的桌面(测试的恢复正常)
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11445843.html
Copyright © 2020-2023  润新知