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的时候,就可以看到如下界面。
点击swagger检测到其中一个API,然后点击try it out,最后输入参数点击execute。这样就可以直观的看到我们这个API的结果了。
课题目录:https://blog.csdn.net/turkeym4/article/details/106761043
项目地址:https://gitee.com/turkeymz/baseboot