springboot配置swagger自动生成文档

参考: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);

	}

}

猜你喜欢

转载自blog.csdn.net/matengbing/article/details/83241861