0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何搭建 Swagger API文档平台

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-09 15:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

相信大家平时开发的过程中,都会使用到 API文档工具吧?大家都在使用什么呀?Java docsI/O Docs, apiary.io, Docco, Dexy, Doxygen, TurnAPISwagger。今天我就来教大家如何使用 Swagger 搭建 API 文档,并且配置权限使用。毕竟开发文档还是内容使用的为好,万一上线到生产环境,没有关swagger 又没有设置权限,那可不GG啦。

好,我们这就上手搞起来。

我们将使用 SpringfoxSwagger 2 规范的实现,并通过 JWT 的方式来设置权限。

配置SwaggerUI

第一步:向Spring Boot项目添加Maven依赖项

打开 pom.xml 文件,添加 springfox-boot-startermaven 依赖中。

< dependency >
    < groupId >io.springfox< /groupId >
    < artifactId >springfox-boot-starter< /artifactId >
    < version >3.0.0< /version >
< /dependency >

添加 springfox-boot-starter 依赖后,spring boot 能启动配置功能,配置好 swagger,所以我们不需要手动添加注解来启用 Swagger

我们启动一下项目访问 Swagger 文档的 JSON API , 来看看 Springfox 是否正常运行。我们可以在浏览器中输入以下URL:

http://localhost:8080/v3/api-docs

图片

能够看到以上的类似结果,说明我们第一步已经成功了。

第二步:将 Swagger 2 集成到 Spring Boot 项目中去

我们创建一个 SwaggerConfig 类,并用 @Configuration 注解来注释。Swagger 的配置主要围绕着 Docket 对象来完成。我们可以在 SwaggerConfig 类中添加以下代码。

@Configuration
public class SwaggerConfiguration {
    private ApiInfo apiInfo() {
        return new ApiInfo("Blog REST APIs",
                "REST APIs for Blog Application",
                "1.0",
                "Terms of service",
                new Contact("xxx", "xxx", "xxx"),
                "License of API",
                "API license URL",
                Collections.emptyList());
    }
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

在构造 Docket 对象之后,它的 select() 方法返回了 ApiSelectorBuilder 的一个实例,它提供了一种控制 Swagger 所暴露的端点的方法。

我们可以通过使用 RequestHandlerSelectorsPathSelectors 配置选择 RequestHandlers 的路径。如果两者两者使用 any() , 那就说明配置所有的 API 都能在 Swagger 上显示了。

第三步:访问 Swagger UI

Swagger UI 是一个内置的解决方案,使用户与 Swagger 生成的API文档的交互变得更加容易。我们在浏览器中输入下面URL即可查看:

http://localhost:8080/swagger-ui/

图片

结果应该是这样的。

好,到这里 Swagger 的使用配置就算结束了。那接下来我们来看看怎么用JWT增加权限配置呢?

配置 JWT

JWT 是什么?相信大家都一定听过吧,它就是 JSON Web Token 的缩写。话不多说,直接上手代码配置起来。在 SwaggerConfig 里面新增代码。

我们先来配置 ApiKey 作为 JWT认证 header 信息:

public static final String AUTHORIZATION_HEADER = "Authorization";
    private ApiKey apiKey(){
        return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
    }

下一步,我们配置 JWTSecurityContext , 对 SecurityContext 配置全局的 AuthorizationScope :

private SecurityContext securityContext(){
        return SecurityContext.builder().securityReferences(defaultAuth()).build();
    }
    private List< SecurityReference > defaultAuth(){
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        return Arrays.asList(new SecurityReference("JWT", authorizationScopes));
    }

然后我们配置 Docket 对象,对 Docket 对象设置 SecurityContextSecuritySchemes

@Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .securityContexts(Arrays.asList(securityContext()))
                .securitySchemes(Arrays.asList(apiKey()))
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

到这里,JWT 就配置完成了,感觉是不是挺简单的?好,我们再来运行一下,看看效果

图片

我们点击右上角的 Authorize 按钮,弹出一个输入 apiKey 的弹出层。

图片

输入 api key 之后,点击 Authorize 认证通过,我们就又能调用 API 接口调试了。

用注解定制 Swagger API 文档

为了能够定制 Swagger 文档,swagger-core 提供了一套注解来声明和操作输出。

Swagger-core 注解:

NameDescription
@Api标记为 Swagger 资源
@ApiModel标记为 Swagger 模型
@ApiModelProperty模型字段的属性说明
@ApiOperationhttp接口的说明
@ApiParamhttp 接口参数说明

更多详细的说明可以参考 GitHub 上的解释:https://github.com/swagger-api/swagger-core/wiki/annotations

现在我们就举个例子来解释怎么使用这些个注解, 首先来看 @Api@ApiOperation 怎么使用:

@Api(value = "CRUD Rest APIs for Post resources")
@RestController
@RequestMapping()
public class PostController {
    @ApiOperation(value = "Get All Posts REST API")
    @GetMapping("/api/v1/posts")
    public PostResponse getAllPosts(
            @RequestParam(value = "pageNo", defaultValue = "0", required = false) int pageNo,
            @RequestParam(value = "pageSize", defaultValue = "100", required = false) int pageSize
    ){
        ...
    }
 
}

再来看看 @ApiModel@ApiModelProperty 怎么使用:

@ApiModel(description = "Post model information")
@Data
public class PostDto {
    @ApiModelProperty(value = "Blog post id")
    private long id;
}

是不是感觉 so easy?

总结

通过这篇文章我们学习了如何通过 Springfox 来搭建 Swagger API 文档平台,然后也学会了如何设置 JWT 的方式做认证,保证 API 不会被别人能够恶意使用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    2158

    浏览量

    66250
  • 浏览器
    +关注

    关注

    1

    文章

    1042

    浏览量

    36909
  • URL
    URL
    +关注

    关注

    0

    文章

    141

    浏览量

    16110
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73156
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    swagger和smart-doc的区别

    首先,Swagger 这个工具能够自动生成 API 接口文档,在线调试,节省了很多书写文档的时间,非常强大。 但是,想要文档生成的合格,还是
    的头像 发表于 09-30 10:01 907次阅读
    <b class='flag-5'>swagger</b>和smart-doc的区别

    关于IAR搭建开发平台

    请教大神:小弟刚入行STM32,想问如何用IAR搭建STM32的开发平台,网上找了些文档看,还是不太清楚,望大神不吝赐教
    发表于 07-03 09:04

    Tasking平台搭建流程

    在QQ群里看到有人问Tasking平台搭建的问题,正好以前做过的这类文档,发上来共享一下,希望能有点帮助Tasking-平台搭建.pdf (
    发表于 12-14 10:39

    缺少VGlite字体渲染api文档,求分享

    我试图使用 vglite api 在 MIMXRT1166/1176 上使用 verisilicon gpu 渲染图形,并且特别缺乏关于此的文档。 我能够很好地初始化 GPU 并渲染矢量和光栅对象
    发表于 04-24 06:42

    如何搭建API程序_框架api接口规范

    基于互联网的应用正变得越来越普及,在这个过程中,有更多的站点将自身的资源开放给开发者来调用。对外提供的API 调用使得站点之间的内容关联性更强,同时这些开放的平台也为用户、开发者和中小网站带来了更大的价值。搭建
    发表于 01-04 17:48 1.2w次阅读
    如何<b class='flag-5'>搭建</b><b class='flag-5'>API</b>程序_框架<b class='flag-5'>api</b>接口规范

    如何通过ApiFox来构建API场景测试

    在开发前后台分离项目并且通过不同团队来实现的时候,如何将后台设计的 API 准确的传达到前台,是一个非常重要的工作。为了简化这个过程,开源社区做了很多努力,比如 protobuf技术,swagger
    的头像 发表于 09-01 10:48 2222次阅读

    深度“盘”一下Eolink这款免费API协作平台

    使用 Flasgger 得到一个 Swagger UI 具体步骤,不做重点描述,咱们的目标是打通 Swagger 和 Eolink,让 API 研发资产可以盘活,Swagger 简易部
    的头像 发表于 12-15 14:59 1681次阅读

    ChatGPT API文档

    补充下这个API文档,帮助理解。感觉prompt(提示)、Embeddings(嵌入)、Fine-tunes(微调)有 点牛逼。
    发表于 06-06 17:38 0次下载

    swagger和smart-doc的区别

    首先,Swagger 这个工具能够自动生成 API 接口文档,在线调试,节省了很多书写文档的时间,非常强大。 但是,想要文档生成的合格,还是
    的头像 发表于 09-30 16:08 2078次阅读
    <b class='flag-5'>swagger</b>和smart-doc的区别

    红绿灯倒计时API开发文档

    百度红绿灯倒计时API开发文档
    发表于 06-30 11:53 9次下载

    集成API设计+测试+文档管理,全新一站式解决方案SmartBear API Hub功能介绍

    SmartBear全新推出API Hub,助力高效应对API开发挑战! API Hub专为API开发者、架构师、产品经理和QA团队打造,将设计、测试、治理和
    的头像 发表于 04-08 17:52 640次阅读
    集成<b class='flag-5'>API</b>设计+测试+<b class='flag-5'>文档</b>管理,全新一站式解决方案SmartBear <b class='flag-5'>API</b> Hub功能介绍

    电商API集成入门:从零开始搭建高效接口

    零开始,逐步引导您搭建一个高效、可靠的电商API接口。目标读者为初学者,我们将使用简单语言和实用示例,确保内容真实可靠。 什么是电商APIAPI是软件系统间交互的桥梁,允许不同应用
    的头像 发表于 07-10 14:23 419次阅读
    电商<b class='flag-5'>API</b>集成入门:从零开始<b class='flag-5'>搭建</b>高效接口

    闲鱼平台获取商品详情API接口

    ​  闲鱼是阿里巴巴旗下的二手交易平台,为开发者提供了丰富的API接口,方便获取商品数据。本文将详细介绍如何通过API获取商品详情,包括申请流程、调用方法和代码示例。内容基于公开API
    的头像 发表于 10-27 16:01 608次阅读
    闲鱼<b class='flag-5'>平台</b>获取商品详情<b class='flag-5'>API</b>接口

    淘宝平台获取商品视频 API 接口技术指南

    于数据分析、第三方应用集成等场景。以下内容基于淘宝开放平台的官方文档和常见开发实践,确保真实可靠。我将逐步引导您完成整个过程,包括注册、认证、调用 API 和代码示例。 1. 准备工作:注册淘宝开发者账号 在调用
    的头像 发表于 11-07 14:01 276次阅读
    淘宝<b class='flag-5'>平台</b>获取商品视频 <b class='flag-5'>API</b> 接口技术指南

    Wildberries API 全解析

    一、API 基础概览 Wildberries 提供 RESTful 风格 API,通过 HTTP 协议与卖家系统集成,支持自动化管理店铺、获取实时数据和生成分析报告。官方文档Swagger
    的头像 发表于 12-04 09:45 132次阅读