SpringBoot开发mockserver及生成swagger接口文档
通过springboot开发mock server,包含get及post接口,用于练习接口自动化及jmeter很方便
当然,也为后面jenkins持续集成做基础(开发push代码后 → jenkins自动构建 → 打包 → 重启服务器 → 自动执行自动化测试脚本 → 生成测试报告 → 发送邮件)
项目目录

接口
package com.uncleyong.testdemo.service;
import com.uncleyong.testdemo.model.User;
public interface UserService {
Object queryUserById(int id);
Object deleteUserById(int id);
Object updateUserById(int id, String department);
Object addUser(int id, String name, String sex, String department);
}
实现
package com.uncleyong.testdemo.service.impl; import com.uncleyong.testdemo.model.JsonData;
import com.uncleyong.testdemo.model.User;
import com.uncleyong.testdemo.service.UserService;
import org.springframework.stereotype.Service; @Service
public class UserServiceImpl implements UserService { @Override
public Object queryUserById(int id) {
System.out.println(">>>>>>>>>>>>>>>>>>>>查询用户");
User user = new User();
user.setId(id);
user.setName("jack" + id);
user.setSex("男");
user.setDepartment("测试开发部");
return JsonData.querySuccess(user);
} @Override
public Object deleteUserById(int id) {
System.out.println(">>>>>>>>>>>>>>>>>>>>删除用户");
User user = new User();
user.setId(id);
user.setName("jack" + id);
user.setSex("男");
user.setDepartment("测试开发部");
return JsonData.deleteSuccess(user);
} @Override
public Object updateUserById(int id, String department) {
System.out.println(">>>>>>>>>>>>>>>>>>>>更新用户");
User user = new User();
user.setId(id);
user.setName("jack" + id);
user.setSex("男");
user.setDepartment(department);
return JsonData.updateFail(user);
} @Override
public Object addUser(int id, String name, String sex, String department) {
System.out.println(">>>>>>>>>>>>>>>>>>>>新增用户");
System.out.println("id:" + id + ", name:" + name + ", sex:" + sex + ", department:" + department);
User user = new User();
user.setId(id);
user.setName(name);
user.setSex(sex);
user.setDepartment(department);
return JsonData.addSuccess(user);
}
}
controller
package com.uncleyong.testdemo.controller; import com.uncleyong.testdemo.service.UserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; @RestController
@RequestMapping("/api/v1/user")
@Api(value = "/api/v1/user", description = "用户管理")
public class UserController { @Autowired
private UserService userService; @RequestMapping(value = "/queryById", method = RequestMethod.GET)
@ApiOperation(value = "查询用户",httpMethod = "GET")
public Object qryUser(@RequestParam(name="userId")int userId){
return userService.queryUserById(userId);
} @RequestMapping(value = "/deleteById", method = RequestMethod.POST)
@ApiOperation(value = "删除用户",httpMethod = "POST")
public Object delUser(@RequestParam(name="userId")int userId){
return userService.deleteUserById(userId);
} @RequestMapping(value = "/updateById", method = RequestMethod.POST)
@ApiOperation(value = "更新用户",httpMethod = "POST")
public Object updateUser(@RequestParam(name="userId")int userId, @RequestParam(name="department")String department){
return userService.updateUserById(userId, department);
} @RequestMapping(value = "/add", method = RequestMethod.POST)
@ApiOperation(value = "新增用户",httpMethod = "POST")
public Object addUser(@RequestParam(name="userId")int userId, @RequestParam(name="name")String name, @RequestParam(defaultValue="男",name="sex")String sex, @RequestParam(name="department")String department){
return userService.addUser(userId, name, sex, department);
}
}
swagger配置
package com.uncleyong.testdemo.config; import com.google.common.base.Predicates;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.pathMapping("/")
.select()
.apis(RequestHandlerSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.paths(PathSelectors.regex("/.*"))
.build();
} private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("testdemo项目接口文档")
.contact(new Contact("【uncleyong】","",""))
.description("这是swaggerui生成的testdemo项目接口文档")
.license("项目源码地址").licenseUrl("https://www.cnblogs.com/UncleYong/p/10530261.html")
.version("1.0.0.0")
.build();
}
}
运行Main文件,启动服务

生成的swagger接口文档

浏览器访问接口

项目源码:https://gitee.com/UncleYong/javaMockServer
SpringBoot开发mockserver及生成swagger接口文档的更多相关文章
- springboot项目利用Swagger2生成在线接口文档
Swagger简介. Swagger2是一款restful接口文档在线生成和在线调试工具.很多项目团队利用Swagger自动生成接口文档,保证接口文档和代码同步更新.在线调试.简单地说,你可以利用这个 ...
- .Net Core---- WebApi生成Swagger接口文档
1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...
- spring boot使用swagger生成api接口文档
前言 在之前的文章中,使用mybatis-plus生成了对应的包,在此基础上,我们针对项目的api接口,添加swagger配置和注解,生成swagger接口文档 具体可以查看本站spring boot ...
- springboot+swagger接口文档企业实践(下)
目录 1.引言 2. swagger接口过滤 2.1 按包过滤(package) 2.2 按类注解过滤 2.3 按方法注解过滤 2.4 按分组过滤 2.4.1 定义注解ApiVersion 2.4.2 ...
- springboot+swagger接口文档企业实践(上)
目录 1.引言 2.swagger简介 2.1 swagger 介绍 2.2 springfox.swagger与springboot 3. 使用springboot+swagger构建接口文档 3. ...
- Springboot系列(七) 集成接口文档swagger,使用,测试
Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...
- Swagger+Spring mvc生成Restful接口文档
简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...
- Spring MVC学习总结(9)——Spring MVC整合swagger自动生成api接口文档
Swagger 号称:世界最流行的API框架,官网:http://swagger.io/,Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总 ...
- Swagger 接口文档规范
导语: 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是 ...
随机推荐
- TypeWriting
头文件getputch.h /* * getputch.c */ /* 用于getch/putch的通用头文件"getputch.h" */ #ifndef __GETPUTCH ...
- [转载]3.11 UiPath存在文本Text Exists的介绍和使用
一.Text Exists的介绍 检查是否在给定的UI元素中找到了文本,输出的是一个布尔值 二.Text Exists在UiPath中的使用 1.打开设计器,在设计库中新建一个Sequence,为序列 ...
- .NET Core应用中使用分布式缓存及内存缓存
.NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓存,.NET Core提供了针对 ...
- netcore与ef资料收集
http://www.cnblogs.com/cgzl/p/7661805.html https://www.cnblogs.com/cgzl/p/7675485.html https://www.c ...
- 实战django(一)--(你也能看懂的)注册与登录(带前端模板)
先是具体目录:(主要是注意templates和static的位置),其中person文件夹是上一期实战的,不用理会,login是本节实战app 项目urls.py from django.contri ...
- [转帖]Linux监测某一时刻对外的IP连接情况
Linux监测某一时刻对外的IP连接情况 https://blog.csdn.net/twt326/article/details/81454171 公司机器有病毒 需要分析一下. 之前有需要,在CS ...
- eclipse jvm 参数配置
双击tomcat服务器---->打开启动配置--->VM 自变量
- fiverr无法注册的解决办法,fiverr注册教程
转载 https://www.wok99.com/450.html
- 基于 HTML5 换热站可视化应用
换热站是整个热网系统中最核心的环节,它将一侧蒸汽或高温水通过热交换器换成可以直接进入用户末端的采暖热水.换热站控制系统是集中供热监控系统的核心部分,换热站控制系统既可独立工作,也可以接受调度中心的监督 ...
- Java学习:网络编程总结
Java网络编程总结 一.概述 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设备( ...