SpringBoot+Swagger2及访问重定向

目录

  • 简介
  • 改造
  • 测试
  • 附录

简介

Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。当我们在后台的接口修改了后,swagger可以实现自动的更新,而不需要人为的维护这个接口进行测试。
所以为了方便API的测试及查看,我们一般会在项目中引入swagger-ui来协助我们完成工作。

改造

首先再pom文件里面我们需要引入swagger依赖

        
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger2artifactId>
            <version>2.9.2version>
        dependency>
        <dependency>
            <groupId>io.springfoxgroupId>
            <artifactId>springfox-swagger-uiartifactId>
            <version>2.9.2version>
        dependency>

然后创建一个configration的包,未来这个包将会专门存放我们项目里的配置类。再SpringBoot里面我们一般会通过注解来注册一个Bean。从而达到零xml的效果。当然大家也可以理解成这个动作和以前配xml注册Bean时对等的。
接着我们创建一个SwaggerConfig的类,专门用来配置我们的swagger需求。

// 标明时一个配置类,并启动swagger
@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.turkeymz.baseboot.controller"))
                .paths(PathSelectors.any())
                .build().apiInfo(new ApiInfoBuilder()
                        .title("Swagger API查询")
                        .description("服务API查询及测试调用")
                        .contact(new Contact("turkeymz", "https://blog.csdn.net/turkeym4/article/details/106761043", "[email protected]"))
                        .build());
    }

}

这里需要注意的是basePackage一定要改成你们对应的controller路径。否则就无法识别了。
接着再controller类里面添加API信息,

    @ApiOperation("测试普通API通信")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType="path",name="name",dataType="String",required=true,value="名字",defaultValue="tom")
    })
    @GetMapping("/hello/{name}")
    public APIResultBody sayHello(@PathVariable("name") String name){
        logger.info("input: {}",name);
        String result = "Hello " + name + ", here is base boot.";
        if("error".equals(name)){
            throw new SysException(HttpExceptionCode.SERVER_BUSY);
        }
        return APIResultBody.success(result);
    }

由于Swagger-ui的默认访问地址是http://ip:端口/swagger-ui.html#/。这显然不方便我们的输入。我的的目标是只输入ip:端口就可以访问我们的测试页面。所以这里稍微做一下springboot的重定向。其实原理就是当我们在浏览器中输入ip:端口之后,系统会自动帮我们映射到swagger的地址。
在configration包里面创建一个配置类,这里命名为WebViewConfig。然后添加重定向配置

@Configuration
public class WebViewConfig implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {

        registry.addRedirectViewController("/", "/swagger-ui.html#/");
    }
}

测试

到这里,我们的Swagger就大致整合完毕了。然后我们启动项目并访问http://localhost:8080/swagger-ui.html#/或者http://localhost:8080的时候,就可以看到如下界面。
SpringBoot+Swagger2及访问重定向_第1张图片
点击swagger检测到其中一个API,然后点击try it out,最后输入参数点击execute。这样就可以直观的看到我们这个API的结果了。
SpringBoot+Swagger2及访问重定向_第2张图片

附录

课题目录:https://blog.csdn.net/turkeym4/article/details/106761043
项目地址:https://gitee.com/turkeymz/baseboot

你可能感兴趣的:(Spring)