小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务
笔记
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来修饰了

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

小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务的更多相关文章
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务
笔记 2.微服务调用方式之ribbon实战 订单调用商品服务 简介:实战电商项目 订单服务 调用商品服务获取商品信息 1.创建order_service项目 2 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_6-06 zuul微服务网关集群搭建
笔记 6.Zuul微服务网关集群搭建 简介:微服务网关Zull集群搭建 1.nginx+lvs+keepalive https://www.cnblogs.com/liuyisai/ ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_汇总
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
笔记 ============================================= SpringCloud课程笔记.txt 第一章 课程介绍和学习路线 1.微服务架构SpringClou ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
笔记 第四章 服务消费者ribbon和feign实战和注册中心高可用 1.常用的服务间调用方式讲解 简介:讲解常用的服务间的调用方式 RPC: 远程过程调用,像调用本地 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下
笔记 4.Feign结合Hystrix断路器开发实战<下> 简介:讲解SpringCloud整合断路器的使用,用户服务异常情况 1.feign结合Hystrix ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
笔记 第三章 SpringCloud核心组件注册中心 1.什么是微服务的注册中心 简介:讲解什么是注册中心,常用的注册中心有哪些 (画图) 理解注册中心:服务 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计
笔记 4.微服务下电商项目基础模块设计 简介:微服务下电商项目基础模块设计 分离几个模块,课程围绕这个基础项目进行学习 小而精的方式学习微服务 1.用户服务 ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_03常见的微服务框架
笔记 3.常见的微服务框架 简介:讲解常用的微服务框架 consumer: 调用方 provider: 被调用方 一个接口一般都会充当两个角色(不是同时充当) ...
随机推荐
- ACM中值得注意/利用的C++语法特性
C++ 的易踩坑点 随时补充 STL不能边循环边erase() //自己写的求交集RE了 for (set <int> ::iterator it = s.begin(); it != s ...
- withdraw搭建
<!-- yuan -->首先得安装rabbitmq(由于运行过程中报错)1.安装rabbitmq服务软件包 : apt install rabbitmq-server2.安装完成后在ra ...
- P5025 [SNOI2017]炸弹 题解
蒟蒻的第一篇黑题题解(学了这么长时间了才第一道也是没谁了.) 题目链接: Solution: 朴素: 根据题目描述,我们可以处理每一个x节点左右爆炸半径范围内的点,然后模拟一次爆炸 (for),遍历每 ...
- SpringMVC问题整理
JSP页面无法获取ModelAndView里的值 自己搭的项目突然EL表达式取不到值了 不管是用 ${msg} 还是用JSTL的<c:out value="${msg}"/& ...
- Java用递归实现全排列,详细
package edu.cqu.algorithmTest; import java.util.Scanner; // 全排列,递归实现 public class Main8 { public sta ...
- SpringBoot集成Druid实现监控
application.properties文件完整信息 #连接数据库 spring.datasource.driver-class-name=org.mariadb.jdbc.Driver spri ...
- 基于VS2013的MFC窗体按钮事件触发案例(亲测可用)
学过python的小朋友们一定对python freeze命令不陌生,这一命令用于导出python安装模块,用于新电脑可以快速的配置安装所需的模块,以便快速的加入项目. 那么我们大可以用 window ...
- Qt5 使用lambda
c11新特性中加入了lambda表达式,所以Qt 也支持 需在.pro文件中加入 CONFIG += c++11 m_timer = new QTimer(); m_timer->start() ...
- Codeforces Round #586 (Div. 1 + Div. 2) B. Multiplication Table
链接: https://codeforces.com/contest/1220/problem/B 题意: Sasha grew up and went to first grade. To cele ...
- 09 深科技相关表结构 (未完成)、git
1.深科技相关 1. 深科技表结构(6表) 深科技4张+2张用户表 - 深科技 用户表 用户Token 文章来源 文章表 通用评论表 通用收藏表 # ######################## ...