Swagger

2019-07-23  本文已影响0人  凤非飞

SpringBoot项目



1.添加Maven

        <!-- swagger  start -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!-- 默认的UI-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!-- swagger  end-->


2.创建swagger的配置文件
我们可以创建一个文件夹config,专门放置各种配置文件.java
@Configuration是用来让springboot来加载该配置的,然后@EnableSwagger2这个是使用swageer注解。

package com.sun.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
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 SwaggerConfig {

    @Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .pathMapping("/")
                .select()
                .paths(PathSelectors.regex("/.*"))
                .build();
    }

    private ApiInfo apiInfo() {
        ApiInfo apiInfo = new ApiInfo("我的接口文档",
                "文档描述。。。",
                "1.0.0",
                "API TERMS URL",
                "联系人邮箱",
                "license",
                "license url");
        return apiInfo;
    }
}

运行此项目,然后访问 http://localhost:8080/swagger-ui.html (端口根据自己项目而改变),发现只有文档,没有具体方法的。只是代表文档可以生成了。( [basic-error-controller]: Basic Error Controller是基础的,不用关心)



3.现在在Controller添加文档注释

@RestController
@RequestMapping("/user")
@Api("user")
public class UserController {
    @Autowired
    private UserMapper userMapper;

    @ApiOperation(value = "获取所有用户列表", notes = "")
    @RequestMapping(value = "/allUser", method = RequestMethod.GET)
    @ResponseBody
    public List<User> SelectAll() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        return userList;
    }

    @ApiOperation(value = "获取用户详细信息", notes = "根据url的id来获取用户详细信息")
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    @ResponseBody
    public User SelectById(@PathVariable Long id) {
        System.out.println(("----- selectAll method test ------"));
        User user = userMapper.selectById(id);
        return user;
    }


    @ApiOperation(value="添加用户", notes="根据信息添加用户")
    @ApiImplicitParams(@ApiImplicitParam(name ="user", value ="用户详细实体user", required =true, dataType ="User"))
    @RequestMapping(value = "/addUser", method = RequestMethod.PUT)
    @ResponseBody
    public String addUser(@RequestBody User user) {
        User u = new User();
        u.setName(user.getName());
        u.setAge(user.getAge());
        userMapper.insert(u);
        return "success";
    }

    @ApiOperation(value="删除用户", notes="根据url的id来指定删除对象")
    @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
    @ResponseBody
    public String deleteUser(@PathVariable Long id){ 
        userMapper.deleteById(id);
        return"success";
    }

}

再次访问,发现界面已经变化


你可以在这里进行类似的接口测试
1.添加用户




2.获取用户



3.删除用户


你也可以选择是否开启或者关闭swagger-UI
禁用方法1:使用注解@Profile({"dev","test"}) 表示在开发或测试环境开启,而在生产关闭。(推荐使用)

@Configuration
@EnableSwagger2
@Profile({"dev", "test"})// 设置 dev test 环境开启
public class SwaggerConfig {
...
}

禁用方法2:使用注解@ConditionalOnProperty(name = "swagger.enable", havingValue = "true") 然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不填则默认关闭Swagger.
在原swagger-UI配置文件基础上添加第1,2和7行

1.  @Value("${swagger.enable}")
2.  private boolean enableSwagger;

3.  @Bean
4.  public Docket api(){
5.      return new Docket(DocumentationType.SWAGGER_2)
6.            .apiInfo(apiInfo())
7.            .enable(enableSwagger) //<--- Flag to enable or disable possibly loaded using a property file
8.            .pathMapping("/")
9.            .select()
10.           .paths(PathSelectors.regex("/.*"))
11.           .build();
12      }

在application.properties中添加配置信息

#是否开启swagger,false为关闭
swagger.enable: false

现在访问 http://localhost:8080/swagger-ui.html


遇到的错误
在swagger-ui.html中某个controller不显示,原因是

public String loginCheck(String account,String password){
}

应该

public String loginCheck(@RequestParam String account, @RequestParam String password){
}


这里推荐两个界面。都是引入相应的jar包即可,不需要有任何其他改动。
1.swagger-ui-layer


2.swagger-bootstrap-ui

访问路径也不同了,看官网
        <!-- swagger  start-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!--下面三个都是UI,任选一个-->
        <!--<dependency>-->
            <!--<groupId>io.springfox</groupId>-->
            <!--<artifactId>springfox-swagger-ui</artifactId>-->
            <!--<version>2.2.2</version>-->
        <!--</dependency>-->
        <!--<dependency>-->
            <!--<groupId>com.github.caspar-chen</groupId>-->
            <!--<artifactId>swagger-ui-layer</artifactId>-->
            <!--<version>1.0.0</version>-->
        <!--</dependency>-->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.7</version>
        </dependency>
        <!-- swagger  end-->


<--完-->


参考文章:
https://www.jianshu.com/p/cdfa2eacf8ce
https://www.jianshu.com/p/96a5b95cbf29


喜欢或者对你有用,就轻轻的点个喜欢就行

上一篇下一篇

猜你喜欢

热点阅读