参考:swagger官网
springboot集成swagger生成接口文档
在pom.xml文件中加入swagger依赖:
<dependency>
<groupId>com.didispace</groupId>
<artifactId>spring-boot-starter-swagger</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
在application.yml(或者application.properties)文件中加入swagger的配置,下面是application.yml的配置
swagger:
enabled: true #开启swagger
title: "swagger"
description: "swagger"
version: "v1.0"
license: "swagger"
license-url: "swagger"
terms-of-service-url: "swagger"
contact:
name: "swagger"
email: "swagger"
url: "swagger"
base-package: "com.unicom"
base-path: "/**"
在启动类上加上
@EnableSwagger2Doc //开启swagger生成文档
base-pachage是扫描的包
base-path:/**注意是两个*,如果只写一个会导致requestmapping的/xxx/yyy不会生成文档
swagger常用注解:参考
写一个controller类:
package com.unicom.peixun.web;/**
* Created by matengbing on 2018/10/15.
*/
import com.unicom.peixun.Response.ResponseBean;
import com.unicom.peixun.domain.User;
import com.unicom.peixun.enums.UnicomResponseEnums;
import com.unicom.peixun.service.UserService;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;
/**
* @program: peixun_matb3
* @description:
* @author: matengbing
* @create: 2018-10-15 17:06
**/
@RestController
@RequestMapping(value = "/user")
@Api(value = "UserController",description = "用户控制")
public class UserController {
@Autowired
private UserService userService;
@CrossOrigin
@ApiOperation(value = "获取用户列表,分页",notes = "获取用户列表,分页")
@ApiImplicitParams(
{
@ApiImplicitParam(name = "pageNo",value = "第几页",required = true,dataType = "int",paramType = "query"),
@ApiImplicitParam(name = "pageSize",value = "每页的记录数",required = true,dataType = "int",paramType = "query")
}
)
@ApiResponse(code = 200,message = "获取用户列表成功")
@RequestMapping(value = "/users",method = RequestMethod.POST)
public ResponseBean<Object> lists(@RequestParam(value = "pageNo",defaultValue = "1",required = false) int pageNo ,
@RequestParam(value = "pageSize",defaultValue = "5",required = false) int pageSize ){
ResponseBean<Object> responseBean=new ResponseBean<Object>(true,userService.getall(pageNo,pageSize),
UnicomResponseEnums.SUCCESS_OPTION);
return responseBean;
}
@CrossOrigin
@ApiOperation(value = "添加用户",notes = "添加用户")
@ApiImplicitParams(
{
@ApiImplicitParam(name = "username",value = "用户名",required = true,dataType = "String",paramType = "insert"),
@ApiImplicitParam(name = "password",value = "用户密码",required = true,dataType = "String",paramType = "insert")
}
)
@ApiResponse(code = 200,message = "新建用户成功")
@RequestMapping(value = "/adduser",method = RequestMethod.POST)
public ResponseBean<Object> addUser(@RequestParam(value = "username",required = true) String username,
@RequestParam(value = "password",required = true) String password,
@RequestParam(value = "permitLogin",required = false,defaultValue = "1") int permitLogin
){
if(username==null||password==null){
return new ResponseBean<>(true,null,UnicomResponseEnums.ILLEGAL_ARGUMENT);
}
if(permitLogin!=0&&permitLogin!=1){
return new ResponseBean<>(false,null,UnicomResponseEnums.ILLEGAL_ARGUMENT_PERMIT_LOGIN);
}
if(userService.isExists(username)){
return new ResponseBean<>(false,null,UnicomResponseEnums.REPEAT_REGISTER);
}
User user = new User();
user.setUsername(username);
user.setUserpwd(password);
user.setPermit_login(permitLogin);
userService.addUser(user);
User user_database=userService.findById(user.getId());
return new ResponseBean<>(true,user_database,UnicomResponseEnums.SUCCESS_OPTION_ADDUSER);
}
@CrossOrigin
@ApiOperation(value = "用户登录",notes = "用户登录")
@ApiImplicitParams(
{
@ApiImplicitParam(name = "username",value = "用户名",required = true,dataType = "String",paramType = "query"),
@ApiImplicitParam(name = "password",value = "用户密码",required = true,dataType = "String",paramType = "query")
}
)
@ApiResponse(code = 200,message = "登录成功")
@RequestMapping(value = "/login",method = RequestMethod.POST)
public ResponseBean<Object> login(HttpServletRequest request, @RequestParam(value = "username",required = true) String username,
@RequestParam(value = "password",required = true) String password){
HttpSession session=request.getSession();
if(username==null||password==null){
return new ResponseBean<>(true,null,UnicomResponseEnums.ILLEGAL_ARGUMENT);
}
User user=userService.findBynameAndPwd(username,password);
if(user==null){
return new ResponseBean<>(true,null,UnicomResponseEnums.NOT_MATCH);
}
if(user.getPermit_login()==0){
return new ResponseBean<>(true,null,UnicomResponseEnums.NOT_PERMITLOGIN);
}
session.setAttribute("user",user);
return new ResponseBean<>(true,null,UnicomResponseEnums.LOGIN_SUCCESS);
}
@CrossOrigin
@ApiOperation(value = "删除用户",notes = "删除用户")
@ApiImplicitParam(name = "id",value = "用户id",required = true,dataType = "int",paramType = "delete")
@RequestMapping(value = "/delete",method = RequestMethod.POST)
public ResponseBean<Object> deleteUser(@RequestParam(value = "id",required = true) int id){
List<Integer> list=new ArrayList<>();
list.add(id);
return new ResponseBean<>(true,list,UnicomResponseEnums.SUCCESS_OPTION_DELETE_USER);
}
}
如果类上面加了requestmapping(value="/user")或者方法上写了/xx/yy需要注意swagger的配置,base-path:/**注意是两个*
下面是效果图
配置拦截器时需要配置不拦截swagger相关请求
package com.unicom.peixun.configuration;
import com.unicom.peixun.inteceptor.LoginInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**
* @program: peixun_matb3
* @description:
* @author: matengbing
* @create: 2018-10-18 10:50
**/
//@Configuration
public class LoginAdapter extends WebMvcConfigurerAdapter {
@Autowired
LoginInterceptor loginInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login")
.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
super.addInterceptors(registry);
}
/**
* 配置静态访问资源
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}
}