springboot+Swagger2生成API

  1. 配置pom.xml
<!-- swagger生成接口API -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.7.0</version>
		</dependency>

		<!-- 接口API生成html文档 -->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger-ui</artifactId>
			<version>2.6.1</version>
		</dependency>
  1. Swagger2配置类
//和Application在一个包
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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class Swagger2 {

	@Bean
	public Docket createRestApi() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo())
				.select()
				.apis(RequestHandlerSelectors.basePackage("com.yjy.user"))
				.paths(PathSelectors.any())
				.build();
	}

	private ApiInfo apiInfo() {
		return new ApiInfoBuilder()
				.title("用户管理RESTful APIs")
				.description("请关注:http://XXXX.com/")
				.termsOfServiceUrl("http://xxxx.com/")
				.version("1.0")
				.build();
	}

}
  1. 下载Swagger UI
    路径https://github.com/swagger-api/swagger-ui
    把dist文件复制到static下面,重名为api,修改index.html其中
    url: “http://localhost:9090/v2/api-docs”,
    访问路径为http://localhost:9090/api/index.html
  2. Controller配置
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;

@RestController
@RequestMapping("/user")
@Api(tags="用户相关API")
public class UserController extends BaseController{
    @Autowired
    private UserService userService;
    @Autowired
    private TokenService tokenService;

    @ApiOperation(value="获取所有用户列表")
    @PreAuthorize("hasRole('ADMIN')")
    @RequestMapping(value = "/getAllUsers",method = RequestMethod.GET)
    public Object getAllUsers(){
        return new ResponseData(ExceptionMsg.SUCCESS,userService.getAllUsers());
    }

    @ApiOperation(value="创建用户", notes="根据User对象创建用户,其中username、password、active为必填项")
    @ApiImplicitParam(name = "user", value = "用户实体user", required = true, dataType = "User")
    @RequestMapping(value = "/addUser",method = RequestMethod.POST)
    public Object addUser(@RequestBody  User user) throws IOException{
        return tokenService.register(user);
    }
    @ApiOperation(value="更新用户详细信息", notes="根据传过来的user信息来更新用户详细信息,username为唯一键")
    @ApiImplicitParam(name = "updateUser", value = "用户实体", required = true, dataType = "User")
    @RequestMapping(value = "/updateUser",method = RequestMethod.PUT)
    public Object updateUser(@RequestBody User updateUser) throws IOException{
        int i = userService.updateUser(updateUser);
        if(i == Constants.NO_EXIST){
            return Response.result(ExceptionMsg.NO_EXIST);
        }else{
            return Response.result(ExceptionMsg.SUCCESS);
        }
    }
    @ApiOperation(value="删除用户", notes="根据用户名来指定删除对象")
    @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String",paramType="query")
    @ApiResponses({ @ApiResponse(code = Constants.SUCCESS, message = "操作成功"),
            @ApiResponse(code = Constants.NO_EXIST, message = "记录不存在"),
            @ApiResponse(code = Constants.NO_AUTH, message = "无权限")})
    @RequestMapping(value = "/deleteUser",method = RequestMethod.DELETE)
    public Object deleteUser(@RequestParam String username){
        int i = userService.deleteUser(username);
        if(i == Constants.NO_EXIST){
            return Response.result(ExceptionMsg.NO_EXIST);
        }else{
            return Response.result(ExceptionMsg.SUCCESS);
        }
    }
    @ApiOperation(value="获取用户详细信息", notes="通过username来获取用户详细信息")
    @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String",paramType="query")
    @RequestMapping(value = "/findUser",method = RequestMethod.GET)
    public Object findUser(@RequestParam(value="username")String username){
        return new ResponseData(ExceptionMsg.SUCCESS,userService.findUser(username));
    }
    @ApiOperation(value="模糊查询用户信息")
    @ApiImplicitParams(
            {@ApiImplicitParam(name = "field", value = "属性名", required = true, dataType = "String", paramType = "query"),
                    @ApiImplicitParam(name = "word", value = "搜索的单词", required = true, dataType = "String", paramType = "query")})
    @RequestMapping(value = "/findUsersByLike",method = RequestMethod.GET)
    public Object findUsersByLike(@RequestParam(value="field")String field, @RequestParam(value="word")String word){
        return new ResponseData(ExceptionMsg.SUCCESS,userService.findUsersByLike(field,word));
    }
    @ApiOperation(value="通过角色获取用户信息", notes="通过roleName来获取用户信息")
    @ApiImplicitParam(name = "roleName", value = "角色名", required = true, dataType = "String",paramType="query")
    @RequestMapping(value = "/findUsersByRoleName",method = RequestMethod.GET)
    public Object findUsersByRoleName(@RequestParam(value="roleName")String roleName){
        return new ResponseData(ExceptionMsg.SUCCESS,userService.findUsersByRoleName(roleName));
    }
    @ApiOperation(value="获取用户所有权限", notes="通过username来获取用户所有权限")
    @ApiImplicitParam(name = "username", value = "用户名", required = true, dataType = "String",paramType="query")
    @RequestMapping(value = "/findAllAuths",method = RequestMethod.GET)
    public Object findAllAuths(@RequestParam(value="username")String username){
        return new ResponseData(ExceptionMsg.SUCCESS,userService.findAllAuths(username));
    }
    @ApiOperation(value="通过用户组获取用户", notes="通过userGroupName来获取用户")
    @ApiImplicitParam(name = "userGroupName", value = "用户组名", required = true, dataType = "String",paramType="query")
    //@ApiIgnore //使用这个注解忽略这个接口
    @RequestMapping(value = "/findUsersByUserGroupName",method = RequestMethod.GET)
    public Object findUsersByUserGroupName(@RequestParam(value="userGroupName")String userGroupName) {
        return new ResponseData(ExceptionMsg.SUCCESS,userService.findUsersByUserGroupName(userGroupName));
    }

}

猜你喜欢

转载自blog.csdn.net/jiangshuanshuan/article/details/84305709