微服务项目整合与测试

微服务项目整合

一. 微服务项目整合

1. 下载项目代码

首先我们下载所需要得项目代码

大家可以直接访问此链接,下载代码,但是因为项目放在github上,我们可以用git直接把这个项目拉取下来。具体看我下面得截图。

https://github.com/shi469391tou/microservice-mallmanagement.git

在这里插入图片描述

2. 导进项目

打开MyEclipse,将刚刚各位下载得项目或者克隆得项目导进Myeclipse
在这里插入图片描述

3. 新建数据库和表信息

在启动咱们得工程项目前,我们需要设置本都数据库得一些信息。

通过查看项目microservice-orderservice的application.yml,我们看到它需要数据库信息
在这里插入图片描述
我们需要在mysql数据库中创建一个名为microservice_mallmanagement的数据库。
在这里插入图片描述
创建数据库和表的代码如下:

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');

4. 修改代码:

在此我们需要做线下测试,所以我们将代码中的application.yml文件修改成本地测试,并将涉及到数据库的信息也改了,因为我们需要用自己的用户名和密码。
在此我只列出一个,其他的需要大家自己去找了。
在这里插入图片描述

5. 启动项目

商城管理系统的启动非常简单,只要运行各自的启动类即可。唯一需要注意的是,项目中的
microservice-gateway-zuul,microservice-mallmanagement和microservice-orderservice都注册到了microservice-eureka-server项目的服务注册中心上,所以必须先启动microservice-eureka-server项目,运行成功后才可以启动其他三个子项目。
启动完成之后,我们通过访问Eureka服务的注册中心,效果如下图所示:
在这里插入图片描述
从上图可以看出,所有服务均已正常启动,并且其他的三个子项目都正确的注册到了Eureka注册中心。
启动成功之后,即可对系统的功能进行测试,具体执行步骤如下:

(1) 测试接口方法。

分别通过microservice-orderservice和microservice-userservice两个微服务项目地址来访问各自暴露的API接口方法(http://localhost:7900/order/findOrders/1和http://localhost:8030/user/findOrders/shitou)进行测试,效果如下:
在这里插入图片描述
在这里插入图片描述

(2) 测试 API 网关服务。

针对上面的microservice-orderservice和microservice-userservice两个微服务项目,可以通过Zuul组件提供的API网关进行对应的接口代理测试(代理访问地址分别为:http://localhost:8050/order-service/user/findOrders/1和http://localhost:8050/user-service/user/findOrders/shitou ),效果分别下图所示:

在这里插入图片描述
在这里插入图片描述

二. 接口可视化工具——Swagger-UI

(一). Swagger-UI使用方法

1. 下载Swagger-UI项目

从 GitHub 上拉取Swagger-UI项目代码,具体的地址如下。
点此访问链接

2.引入Swagger-UI

找到本地下载好的Swagger-UI项目,进入项目并找到dist目录,将整个dist目录复制到所需要使用的Swagger-UI工具项目的resources 目录下。这里以micreseservice-userservice项目为例,效果如下图所示;
在这里插入图片描述

3. 加入Swagger依赖

在micreservice-userservice项目的pom文件中加入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>

4.编写配置类

在项目中创建一个Swagger-UI 的配置类 SwaggerConfiguration,并在该类中修改一些默认显示的API相关信息,其中最主要的时接口路径,编辑后如下所示:

package com.itheima.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StopWatch;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Date;
import static springfox.documentation.builders.PathSelectors.regex;
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
	//定义API接口映射路径	
    public static final String DEFAULT_INCLUDE_PATTERN = "/user/.*";
    private final Logger log = 
    		LoggerFactory.getLogger(SwaggerConfiguration.class);
    @Bean
    public Docket swaggerSpringfoxDocket() {
      log.debug("Starting Swagger");
      StopWatch watch = new StopWatch();
      watch.start();
      //用于生成对应API接口文档的描述信息,可省略
      ApiInfo apiInfo = new ApiInfo("用户管理API接口测试文档","description",
        		"termsOfServiceUrl","contact","version","","");
      Docket docket = new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo)
        .genericModelSubstitutes(ResponseEntity.class)
        .forCodeGeneration(true)
        .genericModelSubstitutes(ResponseEntity.class)
        .directModelSubstitute(java.time.LocalDate.class, String.class)
        .directModelSubstitute(java.time.ZonedDateTime.class, Date.class)
        .directModelSubstitute(java.time.LocalDateTime.class, Date.class)
        .select()                
        .paths(regex(DEFAULT_INCLUDE_PATTERN))//匹配路径生成对应接口文档 
        .build();
      watch.stop();
      log.debug("Started Swagger in {} ms", watch.getTotalTimeMillis());
      return docket;
    }
}

(二). Swagger-UI 使用测试

1. 整合测试

重新启动所有整合了Swagger-UI接口文档工具的微服务项目,启动成功后,通过对应“服务地址IP + 端口 + /swagger-ui.html”请求路径即可进入测试页面,效果如下所示。
在这里插入图片描述
在这里插入图片描述
从上图可以看出,浏览器已显示出了Swagger-UI测试页面,并且页面中分别列出了各自接口控制器类user-controller和order-controller,这就说明项目与Swagger-UI 整合成功。

2.接口测试

以用户管理API接口测试文档为例,并单击user-controller面板,会展示出接口的所有方法(项目只有一个GET方法),再单击某个具体的方法会展示出详细信息,效果如下图所示:
在这里插入图片描述
从上图可以清楚的知道页面各部分信息的作用,我们主要关心的是具体的某个测试方法的参数。在参数信息输入框中填写username的参数值shitou(之前MySQL数据库初始化时插入的数据),然后单击“Try it out!”按钮即可进行测试,结果如果所示:
在这里插入图片描述
从上图可以看出,该方法正确查询出了username为shitou的用户订单信息,同时在结果上方还提供了另外的Curl和URL两种请求方式。如果项目的接口方法有所变更,只需要将对应服务重启,并刷新文档页面就会自动更新对应的方法。至此,接口测试工具Swagger-UI的具体配置以及与项目的整合使用就已经讲解完毕。
对Swagger-UI的使用感兴趣的读者可以根据需要自行与其他项目整合进行测试、也可以参
考Swagger-UI官方文档提供的使用方式学习更多的内容,具体参考地址为https//swagger.io
docslswagger-tools/#swagger-ui-documentation-29。

猜你喜欢

转载自blog.csdn.net/qq_37955704/article/details/91395297