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 接口文档规范
导语: 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是 ...
随机推荐
- Asp.Net Core 减少Controller获取重复注入对象
原文:Asp.Net Core 减少Controller获取重复注入对象 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012770274/art ...
- Python2.x升级python3.x【升级步骤和错误总结】
网上帖子一大堆,按照那些教程操作,确实可以成功安装.但是安装成功之后呢,pip还是用的python2的pip. 切换到python3的pip之后,发现无法下载模块,还会有很多报错信息.以及" ...
- myeclipse配置springmvc教程
之前一直是使用Eclipse创建Web项目,用IDEA和MyEclipse的创建SpringMVC项目的时候时不时会遇到一些问题,这里把这个过程记录一下,希望能帮助到那些有需要的朋友.我是用的是MyE ...
- Asp.Net、API 、MVC、 PUT/DELETE 报405错解决办法
本地put/delete能正常运行,但是部署在服务器就 报webapi method not allowed 405的错误 解决方案就是在Web.config里面加入如下设置: <system. ...
- vue学习面向对象,在项目中怎么用呢?
面向对象感觉很牛逼,可是在项目中怎么用呢? 我至今见到的用法,写了一个用户对象. 效果:只要执行了new User(userInfo)就会在cookie,localStorage存放数据. 所以最简单 ...
- FastDFS与hadoop的HDFS区别
主要是定位和应用场合不一样 HDFS: 要解决并行计算中分布式存储数据的问题.其单个数据文件通常很大,采用了分块(切分)存储的方式. FastDFS: 主要用于大中网站,为文件上传和下载提供在线服务. ...
- 一个小巧,也很nice的“小日历”--一个Android App
一个小巧也很Nice的“小日历” 背景 因为,常用日历记一些事情,Android自带的日历,如果有事情,会显示一个小点,然后点击进去后才能看到事情的具体内容,不是很方便. 所以,写了一个“小日历” 特 ...
- 深入V8引擎-编译启动
记录一下步骤,方便以后换了电脑重新编译. 1.搞定depot_tools,git地址:git clone https://chromium.googlesource.com/chromium/tool ...
- python程序设计基础(程序设计基础方法)
python初学者程序练习题 注:练习题涉及到range()函数的使用方法和python绘制,后面会单独发篇解释说明. 1.字符串拼接.接收用户输入的两个字符串,将它们组合后输出 str1=input ...
- kafka源码导入idea/eclipse
先进入源码工程:执行gradle idea或者gradle eclipse 之后再导入idea/eclipse