SpringBoot2-第二章:完善在线APIDocs

news/2025/2/9 5:20:35 标签: java, json, git

上一章我们基本完成了项目框架的搭建,我们目前项目是为了完成一个类似传统网站的单机服务器应用,那么我们接着该做一些什么呢?

本项目的GitHub:https://github.com/pc859107393/Go2SpringBoot.git

有兴趣交流springboot进行快速开发的同学可以加一下下面的企鹅群。

实现在线APIDocs

在线ApiDocs是用来做咩的?APIDocs就是对API接口的文档描述形式。可以方便我们在线快速调试接口。注意:swagger并不能帮助我们实现RESTFul接口,只是说能把RESTFul形式的接口信息用页面展示出来。

配置swagger相关设置

首先来讲,我们打开swagger相关的jar包查看一下swagger内部都存在什么些东西,swagger本质是一个在线APIDocs,也就是说我们要先从配置着手,但是我们很早以前分析过springfox相关的配置,在这里我们只需要关注swagger的资源配置就好了,如图2.1所示。

图2.1 swagger的静态资源

在我们以前的项目配置中,所有的资源都是需要合理的分配才能提供给外部访问,在这里我们也是需要做同样的事情才行。

打开springboot的启动类文件,我这里采用的是kotlin编写的启动文件BaseApplication.kt我们具体的操作如下:

@SpringBootApplication
@EnableWebMvc
@EnableSwagger2
@MapperScan(value = ["cn.acheng1314.base.dao"])
@Configuration
class BaseApplication : WebMvcConfigurer {
    
    //在这里添加需要被公开的静态资源
    override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
        //swagger和swagger的第三方皮肤需要被注册
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/")
        registry.addResourceHandler("doc.html")
                .addResourceLocations("classpath:/META-INF/resources/")
        
        //这里是注册的druid的资源
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/")
        
        //这里是注册本程序的静态资源访问目录
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/")
    }
    
    //在这里配置swagger的API分组
    @Bean(name = ["defaultApi"])
    fun createRestApi(): Docket {
        return Docket(DocumentationType.SWAGGER_2)  //Docket,Springfox的私有API设置初始化为Swagger2
                .select()
                //这里指定项目中需要被扫描的Controller的包路径
                .apis(RequestHandlerSelectors.basePackage("cn.acheng1314.base.web"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(ApiInfoBuilder()   //设置API文档的主体说明
                        .title("acheng的SpringBoot探索之路ApiDocs")
                        .description("acheng的SpringBoot探索之路")
                        .version("v1.01")
                        .termsOfServiceUrl("https://acheng1314.cn/")
                        .build())
                .groupName("默认接口")
    }
    
    //此处省略其他代码······,详情请上我的github项目查看
}
复制代码

验证swagger是否生效

接下来我们写一小段代码来试一试,具体代码如下:

@Controller
class MainController {

    @GetMapping(value = ["/"], produces = [MediaType.APPLICATION_JSON_UTF8_VALUE])
    @ResponseBody
    @ApiOperation(value = "User输出测试", notes = "用户查询", response = User::class)
    fun MainLocal(): Any = User("程", "18976962315", "123456", "吹牛", Date())

    @GetMapping(value = ["/test"], produces = [MediaType.TEXT_HTML_VALUE])
    fun getTest(map: ModelMap): String {
        map["test"] = MainLocal()
        return "test1"
    }

    @PostMapping(value = ["/json"], produces = [MediaType.APPLICATION_JSON_UTF8_VALUE])
    @ResponseBody
    @ApiOperation(value = "返回提交的User", notes = "返回提交的User", response = User::class)
    fun getJson(@RequestBody user: User): Any {
        println(String.format("用户信息:%s", user.toString()))
        return GsonUtil.toJson(user)
    }

    //上面的代码中GetMapping和PostMapping 都是SpringMvc中的请求路径注解。produces指定了返回的内容类型。

}
复制代码

运行项目后,结果如图2.2所示。

图2.2 部署完成后的swagger截图

关于上面的@ApiOperation这些注解,包含api关键字的都是io.swagger.annotations下面的注解,具体的使用方法可以百度,也可以去springfox的github看demo,当然我在以前的项目中也介绍过。


http://www.niftyadmin.cn/n/1574768.html

相关文章

2010年个人产品研发计划

进销存——标准版(完成) 总结前一代几个产品功能推出一个通用标准版,改用硬件授权。 产品授权管理系统2.0(完成) 提供新产品的注册、升级、管理等功能的RIA Web系统。 Flex报表引擎(完成&#xff0…

jenkins指定具体项目具体分支进行构建部署

知识背景 1、使用码云WebHooks进行持续集成的时候,我们首先应该明白,他的原理大致是这样的:当我们每一次提交代码到码云的时候,码云会帮我们发送一个关于Push的Post请求到我们的Jenkins服务器,然后Jenkins持续集成插件…

inflate()引发NullPointerException

有时候我们在infalete的时候明明什么都对为什么它会提示出错 原意是你的资源layout出错了 注意看有没有把View写成view 这个View应该大写!V而不是小写v 踩坑踩了两次了!上次以为是个小问题没有注意,这次一定要记录下来!&#xff…

用加密狗控制软件的授权(C#)

加密狗授权方式介绍 每只加密狗都有一个固定的序列号,并且一般是无法修改的。软件运行时读取加密狗的序列号进行判断,序列号通过验证后才能正常使用软件。 选购一套加密狗开发套件 我选购了SaftNet的USB软件狗,入手后查阅开发资料(不同…

哲理寓言

▲ 成长的寓言:做一棵永远成长的苹果树▲    一棵苹果树,终于结果了。   第一年,它结了10个苹果,9个被拿走,自己得到1个。对此,苹果树愤愤不平,于是自断经脉,拒绝成长。第二年&…

技术人如何写好简历

http://ifeve.com/qiuzhi2/ 程序员简历末班模板:https://github.com/geekcompany/ResumeSample

产品开发实录(1)——代码重构

前言 最近,正竭斯底里地重构flex技术平台开发的产品【wizBuilder CS】。以前为赶功能,界面部分代码都写得好乱,现在是时候修理下自己作的孽了,顺便为产品添加多语言支持(Localization)。 主要任务 代码重构 多语言支持 添加新…

网站安全测试之支付漏洞检测与修复

前几篇的网站安全检测的文章,介绍的都是跟验证码以及用户逻辑功能方面的安全测试与防攻击方法,今天给大家深度的来剖析一下关于网站里含有支付接口的安全漏洞。许多商城网站,以及微信支付网站,在线游戏平台,发卡商&…