zoukankan      html  css  js  c++  java
  • 小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来修饰了

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

  • 相关阅读:
    C#编程:依赖倒置原则DIP
    java项目与javaweb项目导入jar包的区别
    《C#从入门到精通(第3版)》目录
    Sublime Text 格式化代码
    ThinkPHP 入门
    CentOS 7.2配置LAMP环境——yum版
    打包名命令:tar
    不规则数组的构建
    Linux文件权限概念
    tomcat启动成功但是没有监听8080端口
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11445843.html
Copyright © 2011-2022 走看看