博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot(十四)-- 整合Swagger2
阅读量:6674 次
发布时间:2019-06-25

本文共 6893 字,大约阅读时间需要 22 分钟。

1.pom依赖

io.springfox
springfox-swagger2
2.2.2
io.springfox
springfox-swagger-ui
2.2.2

2.Swagger配置类

增加@EnableSwagger2和@Configuration注解

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;    /**       * ClassName:SwaggerConfig      * Date:     2017年12月5日 上午11:54:54     * @author   xbq       * @version         * @since    JDK 1.8     */    @Configuration    @EnableSwagger2    public class SwaggerConfig {                @Bean        public Docket createRestApi() {            return new Docket(DocumentationType.SWAGGER_2)                    .apiInfo(apiInfo())                    .select()                    .apis(RequestHandlerSelectors.basePackage("com.rxwx.controller"))                    .paths(PathSelectors.any())                    .build();        }        private ApiInfo apiInfo() {            return new ApiInfoBuilder()                    .title("springboot利用swagger构建api文档")                    .description("简单优雅的restfun风格,http://www.cnblogs.com/xbq8080")                    .termsOfServiceUrl("http://www.cnblogs.com/xbq8080")                    .contact("小葱拌豆腐~")                    .version("1.0")                    .build();        }    }

  通过@Configuration注解,让Spring来加载该类配置,@EnableSwagger2注解来启用Swagger2。

  再通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore注解的API)。

3.启动类加上注解

  @EnableSwagger2

  

4.在控制层 增加 注解

例如:

/**     * 用户控制器     */    @RestController    @RequestMapping(value = "/user")    @Api("用户信息相关api")    public class UserController {        @Autowired        UserService userService;                /**         * register:(注册).           * @param nickName         * @param password         * @param phone         * @return         */        @ApiOperation(value="用户注册", notes="用户注册")        @ApiImplicitParams({            @ApiImplicitParam(paramType="query", name="nickName", dataType="String", required=true, value="用户的姓名"),            @ApiImplicitParam(paramType="query", name="password", dataType="String", required=true, value="用户的密码"),            @ApiImplicitParam(paramType="query", name="phone", dataType="String", required=true, value="用户的电话")        })        @RequestMapping(value = "/register", method = RequestMethod.GET)        public Object register( String nickName, String password, String phone) {            if(StringUtils.isEmpty(nickName)){                return Result.error("-100","nickName为空");            }            if(StringUtils.isEmpty(password)){                return Result.error("-100","password为空");            }            if(StringUtils.isEmpty(nickName)){                return Result.error("-100","phone为空");            }            User user = new User();            user.setNickName(nickName);            user.setPassword(MD5Util.generateMD5(password));            user.setPhone(phone);            try {                userService.insert(user);            } catch (Exception e) {                logger.error(e.getMessage(),e);                return Result.error("-100","注册错误");            }                        return Result.success("success");        }                /**         * login:(登录).           * @author xbq         * Date:2017年11月23日下午6:00:09         *         * @param nickName         * @param password         * @return         */        @ApiOperation(value="用户登录", notes="用户登录")        @ApiImplicitParams({            @ApiImplicitParam(paramType="query", name="nickName", dataType="String", required=true, value="用户的姓名"),            @ApiImplicitParam(paramType="query", name="password", dataType="String", required=true, value="用户的密码")        })        @RequestMapping(value = "/login", method = RequestMethod.GET)        public Object login(String nickName , String password) {            if(StringUtils.isEmpty(nickName)){                return Result.error("-100","nickName为空");            }            if(StringUtils.isEmpty(password)){                return Result.error("-100","password为空");            }            // 根据用户名查询密码            User userResult = null;            try {                userResult = userService.findUserByIdOrName(null, nickName);            } catch (Exception e1) {                logger.error(e1.getMessage(),e1);                return Result.error("-100","根据用户名查询用户密码错误");            }            if(userResult == null) {                return Result.error("-100","不存在该用户名");            }            // 将数据库中的密码 和 界面传来的密码进行验证            boolean flag = MD5Util.verify(password, userResult.getPassword());            if(!flag) {                return Result.error("-100","密码错误");            }            User user = null;            try {                User userParam = new User();                userParam.setNickName(nickName);                user = userService.findUser(userParam);            } catch (Exception e) {                logger.error(e.getMessage(),e);                return Result.error("-100","根据用户名查询用户错误");            }            if(user == null) {                return Result.error("-100","用户名或密码错误");            }            // 生成token            String token = System.currentTimeMillis() + "";            user.setToken(token);            return Result.success(user);        }                /**         * account:(查询账户信息).           * @author xbq         * Date:2017年11月23日下午6:00:18         *         * @param id         * @return         */        @ApiOperation(value="获取指定id用户的详细信息", notes="根据user的id来获取用户详细信息")        @ApiImplicitParam(paramType="query", name="id", dataType="Integer", required=true, value="用户id")        @RequestMapping(value = "/account", method = RequestMethod.GET)        public Object account(Integer id){            User user = null;            try {                user = userService.findUserByIdOrName(id ,null);            } catch (Exception e) {                e.printStackTrace();              }            UserDetail target = new UserDetail();            org.springframework.beans.BeanUtils.copyProperties(user, target);                        return Result.success(target);        }    }

 完成上述代码后,打包Spring Boot程序并启动,打开浏览器访问:,就能看到前文所展示的RESTful API的页面。 

 

你可能感兴趣的文章
mvc SelectList selected失效的解决方法
查看>>
JAVA 设计模式 中介者模式
查看>>
caffe环境配置2
查看>>
我的软件工程课目标
查看>>
var a={n:1}; var b=a; a.x=a={n:2}; console.log(a.x); console.log(b.x);
查看>>
【HDOJ】3016 Man Down
查看>>
window.open打开新页面,并将本页数据用过url传递到打开的页面;需要两个页面;...
查看>>
查看本机IP分为两种情况:
查看>>
Scala进阶之路-Scala特征类与unapply反向抽取
查看>>
洛谷P3057 [USACO12NOV]远处的牧场Distant Pastures
查看>>
hdu3415 Max Sum of Max-K-sub-sequence 单调队列
查看>>
6421B Lab2 DHCP的配置及故障排除
查看>>
[C# 基础知识梳理系列]专题一:深入解析委托——C#中为什么要引入委托
查看>>
FOSCommentBundle功能包:其它添加评论到页面的方法
查看>>
SQL Server 2012笔记分享-17:理解并设置文件表(FileTable)
查看>>
MongoDB运行状态、性能监控与分析
查看>>
Exchange 2016共享邮箱不保存已发送邮件的问题
查看>>
[C#基础知识系列]全面解析C#中静态与非静态
查看>>
SQL Server 2012笔记分享-40:自动维护索引
查看>>
Nginx实战基础篇三 Nginx上虚拟主机的实现过程
查看>>