我的初级Java之路----项目集成swagger

2020-11-10  本文已影响0人  月下飘雪风轻夜

前言:

既然都搜到swagger了,肯定知道是个啥有啥作用了,很懒的我就跳过了,刚开始学Java开发,很多东西前面学后面忘,然后每次重新规划项目时,又要漫天百度,毕竟面向百度编程嘛。所以我决定从0开始,记录下自己的漫漫Java路,方便以后自己温故而知新。

一.添加依赖

implementation("io.springfox:springfox-swagger-ui:2.9.2")
implementation("io.springfox:springfox-swagger2:2.9.2")

二.添加配置项

说的很高大上,实际就一行代码。
在application配置文件里,自定义一个开关属性,用于打开或关闭swagger功能。

spring.swagger.enable=true

三.编写SwaggerConfig类

不是必须的,一些配置根据自己项目需求加减。

@Configuration
@EnableSwagger2
public class SwaggerConfig : WebMvcConfigurationSupport() {
    @Value("\${spring.swagger.enable}")
    private  var swaggerConfig :Boolean = true

    @Bean
    public fun createRestApi(): Docket {
        return Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                .enable(swaggerConfig)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.yjb.ht"))//根目录,为哪个目录自动实现api
                .paths(PathSelectors.any())
                .build()
    }

    private fun apiInfo(): ApiInfo {
        return ApiInfoBuilder().title("接口文档").description("我的api文档")
                .termsOfServiceUrl("localhost:8080/swagger-ui.html")
                .version("1.0")
                .build()
    }
    //防止@EnableMvc把默认的静态资源路径覆盖了,手动设置的方式

    override fun addResourceHandlers(registry: ResourceHandlerRegistry) {

        // 解决静态资源无法访问
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:/static/");
        // 解决swagger无法访问
        registry.addResourceHandler("/swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        // 解决swagger的js文件无法访问
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

使用注解@ApiModel("")标记model类,
使用@ApiModelProperty("")标记model的属性

@ApiModel("用户信息bean")
data class User(@ApiModelProperty("用户名")var name:String, var age:Int, var pwd:String, var address:String) {
}

使用@Api("")标注提供服务的类,表示api类

@Api("用户登陆类")   //标注类,表示这个api的类
class LoginController {

使用@ApiOperation("")标注请求使用的方法
使用@ApiParam("")标注请求方法里的参数说明

@ApiOperation("获取登陆用户实体信息")
@GetMapping("/say/{name}")
@ApiParam("name")
fun sayBye(@PathVariable("name") name:String): User {

然后运行程序,浏览器输入http://localhost:8080/swagger-ui.html即可访问。

上一篇下一篇

猜你喜欢

热点阅读