实验目的

掌握微服务项目的整合使用
掌握Swagger-UI的简单使用

练习内容

1、微服务项目整合

1.1、项目预览

1.1.1、在 https://github.com/shi469391tou/microservice-mallmanagement.git 地址下载,并导入Myeclipse中;

1.1.2、查看项目的结构

1.2、微服务项目的功能介绍

1.2.1、microservice-eureka-server(Eureka注册中心),搭建服务注册中心,子项目将通过配置注册到注册中心。修改配置application文件如下所示:

spring:application:name: eureka-server # 指定应用名称
server:port: 8761
eureka:client:register-with-eureka: falsefetch-registry: falseservice-url:defaultZone: http://localhost:${server.port}/eureka/
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:${server.port}/eureka/

1.2.2、microservice-gateway-zuul,作为其他微服务项目的API网关,实现其他微服务接口的动态代理。配置application文件如下所示:

spring:application:name: gateway-zuul # 指定应用名称cloud:inetutils:preferred-networks:- 10.0   # 设置注册到Eureka中心的优选服务地址server:port: 8050eureka:instance:prefer-ip-address: true  #优选通过IP地址找到对应的服务名称client:#配置eureka注册中心地址serviceUrl:defaultZone: http://localhost:8761/eureka/
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:8761/eureka/#设置Hystrix熔断器判定超时时间
#hystrix:
#  command:
#    default:
#      execution:
#        isolation:
#          thread:
#            timeoutInMilliseconds: 60000
zuul:ignoredServices: '*'routes:user-service:path: /user-service/**serviceId: user-serviceorder-service:path: /order-service/**serviceId: order-service

1.2.3、microservice-orderservice,主要用于商品订单管理,并提供有关订单管理的RESTFUL风格和API接口,配置application文件如下所示:

#DB Configuration
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://192.168.159.137:3306/microservice_mallmanagement
#    与Docker整合时可使用以下配置(也可以使用具体的ip+端口)
#    url: jdbc:mysql://mysql:3306/microservice_mallmanagementusername: rootpassword: a1s2d3f!application:name: order-service # 指定应用名称cloud:inetutils:preferred-networks:- 10.0   # 设置注册到Eureka中心的优选服务地址server:port: 7900 # 指定该Eureka实例的端口号
eureka:instance:prefer-ip-address: true  #优选通过IP地址找到对应的服务名称client:service-url:defaultZone: http://localhost:8761/eureka/  #配置eureka注册中心地址
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:8761/eureka/

1.2.4、在microservice-orderservice中写对应的控制器类:

package com.itheima.controller;
import com.itheima.mapper.OrderMapper;
import com.itheima.po.Order;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/order")
public class OrderController {@Autowiredprivate OrderMapper orderMapper;@GetMapping(path="/findOrders/{userid}")@HystrixCommand(fallbackMethod = "findOrderfallback") //断路器public List<Order> findOrder(@PathVariable("userid") Integer userid) {List<Order> orders=  this.orderMapper.selectOrder(userid);return  orders;}//针对上面断路器发现的问题编写回调方法(参数和返回值要一样)public List<Order> findOrderfallback(Integer userid) {List<Order> orders =new ArrayList<>();return orders;}
}

1.2.5、 microservice-userservice,主要用于商品用户管理,并提供有关用户管理的RESTFUL风格和API接口,配置application文件如下所示:

#DB Configuration
spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://192.168.159.137:3306/microservice_mallmanagement
#    与Docker整合时可使用以下配置(也可以使用具体的ip+端口)
#    url: jdbc:mysql://mysql:3306/microservice_mallmanagementusername: rootpassword: a1s2d3f!application:name: user-service # 指定应用名称cloud:inetutils:preferred-networks:- 10.0   # 设置注册到Eureka中心的优选服务地址
server:port: 8030 # 指定该Eureka实例的端口号
eureka:instance:prefer-ip-address: true  #优选通过IP地址找到对应的服务名称client:service-url:defaultZone: http://localhost:8761/eureka/  #配置eureka注册中心地址
#      上线测试需要使用以下配置
#      defaultZone: http://eureka-server:8761/eureka/
#客户端动态访问常量配置
ORDERSERVICEURL: http://order-service/

1.2.6、在microservice-userservice中写对应的控制器类:

package com.itheima.controller;import com.itheima.mapper.UserMapper;
import com.itheima.po.Order;
import com.itheima.po.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;import java.util.List;@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate UserMapper userMapper;@Value("${ORDERSERVICEURL}")private String ORDERSERVICEURL;@GetMapping(path="/findOrders/{username}")public List<Order> getOrderByUsername(@PathVariable("username")String username) {User user = this.userMapper.selectUser(username);//使用Ribbon后,可以使用http://order-service/而不用使用ip+端口ResponseEntity<List<Order>> rateResponse =restTemplate.exchange(ORDERSERVICEURL+"/order/findOrders/"+user.getId(),HttpMethod.GET, null, new ParameterizedTypeReference<List<Order>>(){});List<Order> orders = rateResponse.getBody();return orders;}
}

1.3 微服务项目启动与测试

1.3.1 在MySQL中创建数据库,并插入数据

CREATE DATABASE microservice_mallmanagement;
USE microservice_mallmanagement;DROP TABLE IF EXISTS `tb_order`;
CREATE TABLE `tb_order` (`id` int(11) NOT NULL AUTO_INCREMENT,`createtime` datetime DEFAULT NULL,`number` varchar(255) DEFAULT NULL,`userid` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=UTF8;
INSERT INTO `tb_order` VALUES ('1', '2017-10-09 10:15:44', '201709181459001', '1');
INSERT INTO `tb_order` VALUES ('2', '2017-10-24 18:22:12', '201709181459008', '1');DROP TABLE IF EXISTS `tb_user`;
CREATE TABLE `tb_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`address` varchar(255) DEFAULT NULL,`username` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=UTF8;
INSERT INTO `tb_user` VALUES ('1', 'beijing', 'shitou');

1.3.2、查看表中的订单信息

1.3.3、查看用户表中信息

1.3.4、启动项目并运行成功后,通过地址http://localhost:8761,访问注册中心

1.3.5、测试接口方法  http://localhost:7900/order/findOrders/1

1.3.6、测试API网关服务

http://localhost:8050/order-service/order/findOrders/1

2、接口可视化工具(Swagger-UI)的使用

2.1、Swagger-UI使用方法

2.1.1、下载Swagger-UI项目 https://github.com/swagger-api/swagger-ui.git

2.1.2、引入Swagger-UI

a)用户管理类

b)订单管理类

2.1.3、加入Swagger依赖

<!-- Use Swagger UI for REST API test --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.2.2</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.2.2</version></dependency>

a)用户管理类

b)订单管理类

2.1.4、编写配置类

a)订单管理类

b)用户管理类

2.2、Swagger-UI使用测试

2.2.1、整合测试

重新启动项目,通过对应服务地址IP+端口+swagger-ui.html,列出接口控制类:

2.2.2、接口测试

单击user-controller面板,展示接口所有方法,单击某个方法,列出详细信息

在参数信息栏,输入username的参数值shitou,单击Try it out按钮进行测试

从图中可以看出,该方法查询出了username为shitou的用户订单信息,同时还提供了curl和URL两种请求方式,如果接口方法出现变更,只需要将对应的服务重启,并刷新文档页面就会自动更新对应的方法.

3、总结

学习掌握了Swagger-UI测试工具,该工具能在项目开发中高开发的效率以及简化操作

微服务项目的整合与测试相关推荐

  1. 微服务项目--商城管理系统的整合与测试

    一.微服务项目结构预览 1.商城微服务项目源码:https://github.com/shi469391tou/microservice-mallmanagement.git 项目源码 通过一个名为m ...

  2. 微服务项目实战-易买网网页(电商)二、MybatisPlus与微服务注册

    目录 一.SpringBoot整合MybatisPlus 创建自动生成代码子模块 1.基于maven方式创建子模块zmall-generator,用于结合mybatis-plus生成代码. 创建商品服 ...

  3. 微服务项目后台技术栈

    微服务项目后台相关技术整理 主要技术 ORM框架-Mybatis Plus Mybatis Plus核心功能 MyBatis Plus与SpringBoot集成 MyBatis Plus集成Sprin ...

  4. 微服务项目构建标准文档

    一    搭建自己的微服务项目 1.1.1  搭建一个基于Spring Boot框架 的Maven子项目 我们在微服务架构上选择的是maven的父子项目,父项目的名称是cloud. 点击cloud   ...

  5. 微服务Spring Boot 整合 Redis 实现 好友关注

    文章目录 ⛅引言 一.Redis 实现好友关注 -- 关注与取消关注 二.Redis 实现好友关注 -- 共同关注功能 ⛵小结 ⛅引言 本博文参考 黑马 程序员B站 Redis课程系列 在点评项目中, ...

  6. 猿创征文 | 微服务 Spring Boot 整合Redis 实战开发解决高并发数据缓存

    文章目录 一.什么是 缓存? ⛅为什么用缓存? ⚡如何使用缓存 二.实现一个商家缓存 ⌛环境搭建 ♨️核心源码 ✅测试接口 三.采用 微服务 Spring Boot 注解开启缓存 ✂️@CacheEn ...

  7. 微服务项目之认证服务

    微服务项目之认证服务 一.Java中的权限框架 1.1 RBAC RBAC 是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为 ...

  8. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  9. 认证服务器的搭建_SpringCloud搭建的认证中心和资源服务器的微服务项目源码分享...

    本项目基于spring-cloud-starter-oauth2搭建的认证中心和资源服务器的微服务项目,项目不仅仅简单的demo,项目的出发点在于实战应用.本项目为笔者花了不少时间和精力整理出来的,只 ...

最新文章

  1. 成功解决cv2.error: C:\projects\opencv-python\opencv\modules\imgproc\src\resize.cpp:4044: error: (-215) s
  2. kubectl技巧之查看资源列表,资源版本和资源schema配置
  3. WebBrowser 控件 内存溢出 补丁 From Microsoft
  4. 图解Java多线程设计模式
  5. jupyter notebook如何打开其他文件夹下的iqynb文件
  6. php动态网页设计(第2版),PHP动态网页设计(第2版)——使用PHP
  7. C语言dos游戏编程,◣电脑游戏编程入门 (DOS)◥
  8. 拆分php中 $i++ ++$i PHP中的i++与++i的区别及效率
  9. 使用jmeter测试接口
  10. 【机器学习】K-means算法Python实现教程
  11. Linux虚拟机修改主机名称,设置域名
  12. php ios表情包,十分钟开发一款 iOS 表情包 App
  13. 3dsmax2021图文安装教程
  14. SqlServer更改字段类型--varchar转decimal
  15. 技术VC的优势以及技术VC是如何生存的
  16. 近视?老花眼?恢复视力,就用这一招!
  17. 《SQL与关系数据库理论——如何编写健壮的SQL代码》一3.7 TABLE_DUM和TABLE_DEE
  18. SQL server安装时:“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机”错误
  19. Java8之Lambda函数式编程(一)
  20. vb版机房收费系统“经典代码总结”--01

热门文章

  1. 电脑温度检测软件哪个好_一般电脑录音软件哪个好?
  2. GitHub与Git入门
  3. 【C++】STL队列和栈的使用
  4. 直播APP常用动画效果
  5. 用Cordova打包Vue-vux项目
  6. Docker构建Nginx+Tomcat动静分离架构
  7. 如何创建可扩展表视图中的iOS 学习和拓展优化(有待更新)
  8. RT-thread内核之进程间通信
  9. oracle grant 权限
  10. sdut AOE网上的关键路径(spfa+前向星)