展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > SpringBoot整合接口管理工具Swagger怎么使用

SpringBoot整合接口管理工具Swagger怎么使用

一、Swagger简介Swagger是一系列RESTfulAPI的工具,通过Swagger可以获得项目的⼀种交互式文档,客户端SDK的自动生成等功能。Swagger的目标是为RESTAPIs定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过Swagger定义,消费者就能与远程的服务互动通过少量的实现逻辑。二、Springboot整合swagger使用SpringBoot集成Swagger的理念是,使用用注解来标

本文目录

    一、Swagger简介

    Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式文档,客户端 SDK 的自动生成等功能。

    Swagger 的目标是为 REST APIs 定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,消费者就能与远程的服务互动通过少量的实现逻辑。

    二、Springboot整合swagger

    使用 Spring Boot 集成 Swagger 的理念是,使用用注解来标记出需要在 API 文档中展示的信息,Swagger 会根据项目中标记的注解来生成对应的 API 文档。Swagger 被号称世界上最流行的 API 工具,它提供了 API 管理的全套解决方案,API 文档管理需要考虑的因素基本都包含,这里将讲解最常用的定制内容。

    1、添加swagger坐标

    Spring Boot 集成 Swagger 3 很简单,需要引入依赖并做基础配置即可。

    
        io.springfox
        springfox-boot-starter
        3.0.0
    

    2、Swagger Helloword 实现

    2.1、创建springboot项目

    在启动类上加上@EnableOpenApi 注解 启用swagger api文档功能

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    
    @SpringBootApplication
    @EnableOpenApi  //启动swagger api文档注解
    public class SpringBootWithSwaggerApplication {
        public static void main(String[] args) {
            SpringApplication.run(SpringBootWithSwaggerApplication.class, args);
        }
    
    }
    2.2、写一个接口
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author 阿水
     * @create 2023-04-11 9:54
     */
    @RestController()
    public class SwaggerController {
        @GetMapping ("hello")
        public String hello(String params) {
            return "hello swagger"+" param为:"+params;
        }
    }

    SpringBoot整合接口管理工具Swagger怎么使用

    2.3、访问地址
    http://localhost:8080/swagger-ui/index.html

    SpringBoot整合接口管理工具Swagger怎么使用

    三、常用的配置注解

    Swagger 通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息等

    1、Api 注解和 ApiOperation 注解

    • @Api

    使用在类上,表明是swagger资源,@API拥有两个属性:value、tags。

    生成的api文档会根据tags分类,直白的说就是这个controller中的所有接口生成的接口文档都会在tags这个list下;tags如果有多个值,会生成多个list,每个list都显示所有接口

    value的作用类似tags,但是不能有多个值

    语法:
      @Api(tags = "用户操作")
      或
      @Api(tags = {"用户操作","用户操作2"})
    • @ApiOperation

    使用于在方法上,表示一个http请求的操作

    语法:
        @ApiOperation(value = "", 
                      notes = "", 
                      response = )
    属性说明:
      value:方法说明标题
      notes:方法详细描述
      response:方法返回值类型

    案例:使用@Api和@ApiOperation生成api文档

    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author 阿水
     * @create 2023-04-11 9:54
     */
    @RestController()
    @Api(tags = {"操作用户"})
    public class SwaggerController {
        @GetMapping ("hello")
        @ApiOperation(value = "swagger请求",notes = "阿水的第一个swagger请求",response = String.class)
        public String hello(String params) {
            return "hello swagger"+" param为:"+params;
        }
    }

    2、ApiImplicitParams 注解和 ApiImplicitParam

    @ApiImplicitParams 注解和 @ApiImplicitParam 用于对方法中的非对象参数(参数绑定到简单类型时使用。)进行说明

    语法:
    @ApiImplicitParams(value = {
         @ApiImplicitParam(name="", value = "", type = "", required = true, paramType = "", defaultValue  = "")
    })
    
    属性说明:
        name:形参名称
        value:形参的说明文字
        type:形参类型
        required:该参数是否必须  true|false
        paramType: 用于描述参数是以何种方式传递到 Controller 的,它的值常见有: path, query, body 和 header 
            path 表示参数是『嵌在』路径中的,它和 @PathVariable 参数注解遥相呼应;
        	query 表示参数是以 query string 的形式传递到后台的(无论是 get 请求携带在 url 中,还是 post 请求携带在请求体中),它和 @RequestParam 参数注解遥相呼应;
        	header 表示参数是『藏在』请求头中传递到后台的,它和 @RequestHeader 参数注解遥相呼应的。
        	form 不常用.
        defaultValue :参数默认值

    注意:@ApiImplicitParam 的 name 属性要和 @RequestParam 或 @PathVariable 的 value 遥相呼应。

    案例:使用@ApiImplicitParams注解和 @ApiImplicitParam 对方法参数进行说明

    import io.swagger.annotations.Api;
    import io.swagger.annotations.ApiImplicitParam;
    import io.swagger.annotations.ApiImplicitParams;
    import io.swagger.annotations.ApiOperation;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @author 阿水
     * @create 2023-04-11 9:54
     */
    @RestController()
    @Api(tags = {"操作用户"})
    public class SwaggerController {
        @GetMapping ("hello")
        @ApiOperation(value = "swagger请求",notes = "阿水的第一个swagger请求",response = String.class)
        @ApiImplicitParams(value ={
                @ApiImplicitParam(name="param1",
                        value = "参数名1",
                        type = "String",
                        required = true,
                        paramType = "query",
                        defaultValue  = "阿水所想的默认值1" ),
                @ApiImplicitParam(name="param2",
                        value = "参数名2",
                        type = "String",
                        required = true,
                        paramType = "query",
                        defaultValue  = "阿水所想的默认值2" )
        })
        public String hello(String param1,String param2) {
            return "hello swagger"+" param1为:"+param1+"param2为"+param2;
        }
    }

    SpringBoot整合接口管理工具Swagger怎么使用

    3、ApiModel注解和 ApiModelProperty

    • @ApiModel

      用在实体类上,表示对类进行说明,用于实体类中的参数接收说明。

    @ApiModel("用户类")
    @Data
    public class Users {
    
        @ApiModelProperty(value = "编码:主键")
        private Integer id;
    
        @ApiModelProperty(value = "用户名")
        private String username;
    
        @ApiModelProperty(value = "密码")
        private String password;
    
    }

    4、ApiResponse 和 ApiResponses

    @ApiResponses 注解和 @ApiResponse 标注在 Controller 的方法上,用来描述 HTTP 请求的响应

    /**
         * 添加用户
         *
         * @param user
         * @return
         */
        @PostMapping("/add")
        @ApiOperation(value = "添加用户",notes = "添加用户信息",response = ResponseResult.class)
        @ApiResponses({ @ApiResponse(code = 200, message = "添加成功", response = ResponseResult.class),
                	    @ApiResponse(code = 500, message = "添加失败", response = ResponseResult.class) })
        public ResponseResult addUser(@RequestBody User user) {
            //获得生成的加密盐
            user.setSalt(SaltUtils.getSalt());
            int n = userService.addUser(user);
            if (n > 0) {
                return new ResponseResult(200, "添加成功");
            }
            return new ResponseResult(500, "添加失败");
        }

    5、创建 SwaggerConfig 配置类

    在 SwaggerConfig 中添加两个方法:(其中一个方法是为另一个方法作辅助的准备工作)

    api()方法使用 @Bean,在启动时初始化,返回实例 Docket(Swagger API 摘要对象),这里需要注意的是 .apis(RequestHandlerSelectors.basePackage("xxx.yyy.zzz")) 指定需要扫描的包路路径,只有此路径下的 Controller 类才会自动生成 Swagger API 文档。

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    /**
     * Swagger配置类
     */
    @Configuration  //项目启动时加载此类
    public class SwaggerConfig {
        @Bean
        public Docket api(){
            return new Docket(DocumentationType.OAS_30)
                    .apiInfo(apiInfo())
                    .select()
                    // 此处自行修改为自己的 Controller 包路径。
                    .apis(RequestHandlerSelectors.basePackage("com.lps.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        public ApiInfo apiInfo(){
            return new ApiInfoBuilder()
                    .title("阿水的项目接口文挡")
                    .description("阿水的 Project Swagger2 UserService Interface")  //说明信息
                    .termsOfServiceUrl("http://localhost:8080/swagger-ui/index.html") //文档生成的主页地址
                    .version("1.0")  //文档版本
                    .build();
        }
    }

    apiInfo()方法配置相对重要一些,主要配置页面展示的基本信息包括,标题、描述、版本、服务条款等,查看 ApiInfo 类的源码还会发现支持 license 等更多的配置

    四、springsecurity整合swagger

    4.1,配置放行的地址

      http.authorizeRequests().antMatchers( "/swagger-ui.html",
                    "/swagger-ui/*",
                    "/swagger-resources/**",
                    "/v2/api-docs",
                    "/v3/api-docs",
                    "/webjars/**").permitAll()
                    .anyRequest().authenticated();

    4.2,替换UI

    上面的整个过程已经完成了,但是生成的接口文档的页面,其实很多人不太喜欢,觉得不太符合国人的使用习惯,所有又有一些大神,提供了其他的UI测试页面。这个页面的使用还是比较广泛的。

    导入以下依赖、重启工程后访问地址:http://localhost:8080/doc.html

    	
            com.github.xiaoymin
            swagger-bootstrap-ui
            1.9.6
        

    SpringBoot整合接口管理工具Swagger怎么使用

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。