通过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接口文档的更多相关文章

  1. springboot项目利用Swagger2生成在线接口文档

    Swagger简介. Swagger2是一款restful接口文档在线生成和在线调试工具.很多项目团队利用Swagger自动生成接口文档,保证接口文档和代码同步更新.在线调试.简单地说,你可以利用这个 ...

  2. .Net Core---- WebApi生成Swagger接口文档

    1. Swagger是什么? Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件 ...

  3. spring boot使用swagger生成api接口文档

    前言 在之前的文章中,使用mybatis-plus生成了对应的包,在此基础上,我们针对项目的api接口,添加swagger配置和注解,生成swagger接口文档 具体可以查看本站spring boot ...

  4. springboot+swagger接口文档企业实践(下)

    目录 1.引言 2. swagger接口过滤 2.1 按包过滤(package) 2.2 按类注解过滤 2.3 按方法注解过滤 2.4 按分组过滤 2.4.1 定义注解ApiVersion 2.4.2 ...

  5. springboot+swagger接口文档企业实践(上)

    目录 1.引言 2.swagger简介 2.1 swagger 介绍 2.2 springfox.swagger与springboot 3. 使用springboot+swagger构建接口文档 3. ...

  6. Springboot系列(七) 集成接口文档swagger,使用,测试

    Springboot 配置接口文档swagger 往期推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配 ...

  7. Swagger+Spring mvc生成Restful接口文档

    简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...

  8. Spring MVC学习总结(9)——Spring MVC整合swagger自动生成api接口文档

    Swagger 号称:世界最流行的API框架,官网:http://swagger.io/,Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总 ...

  9. Swagger 接口文档规范

    导语: 相信无论是前端还是后端开发,都或多或少地被接口文档折磨过.前端经常抱怨后端给的接口文档与实际情况不一致.后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新.其实无论是前端调用后端,还是 ...

随机推荐

  1. .NET Core:过滤器

    过滤器的作用是在 Action 方法执行前或执行后做一些加工处理.使用过滤器可以避免Action方法的重复代码.功能上更贴合业务的使用过滤器. 在Startup中的ConfigureServices方 ...

  2. (三)golang--执行流程分析

    XXX.go--go build XXX.go--XXX.exe XXX.go--go run XXX.go 两种方式的区别:(1)如果我们先编译生成了可执行文件,那么我们可以将该可执行文件拷贝到没g ...

  3. SpringBoot第七篇:整合Mybatis-Plus

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10881666.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   一看这个名 ...

  4. elasticsearch配置集群+elk报错总结

    配置ELK的时候,我平常遇到了以下几种报错情况,整理如下(持续更新中): elasticsearch启动失败 # systemctl start elasticsearch Job for elast ...

  5. 是的 你没看错!!!用JAVA为MCU开发物联网程序?

      是的 你没看错!!!用JAVA为MCU开发物联网程序?          一直以来,物联网设备这种嵌入式硬件,对于Java软件开发者来说,就是Black Magic Box,什么中断.寄存器,什么 ...

  6. scala基础题--函数可以没有返回值案例,编写一个函数,从终端输入一个整数,打印出对应的金字塔

    函数可以没有返回值案例,编写一个函数,从终端输入一个整数,打印出对应的金字塔 import scala.io.StdIn object work02 { def main(args: Array[St ...

  7. 解决plsql中文显示问号(???)问题

    最近新买的电脑,配置好数据库连接后,plsql查看数据与插入中文数据都显示问号(???),同事的都正常显示,查看了很多资料,有的说是数据库字符集的原因让修改数据库的字符集,但是我的数据库都是远程连接正 ...

  8. input或者el-cascader的输入框随输入内容宽度自适应

    解决的思路是动态修改css的width 参考:https://blog.csdn.net/lianzhang861/article/details/84306139中的方法一, 如果是input,用o ...

  9. Flask基于websocket的简单聊天室

    1.安装gevent-websocket pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ gevent-websocket 2.cha ...

  10. python动态视频下载器

    这里向大家分享一下python爬虫的一些应用,主要是用爬虫配合简单的GUI界面实现视频,音乐和小说的下载器.今天就先介绍如何实现一个动态视频下载器. 爬取电影天堂视频 首先介绍的是python爬取电影 ...