25.JavaWeb-接口文档Swagger

news2024/10/6 20:39:57

1.Swagger

        swagger是一款可以根据resutful风格生成的生成的接口开发文档,并且支持做测试的一款中间软件。

1.1 接口文档

        接口文档是用于描述API的一份文档,它包含了API的详细信息,包括API的请求和响应参数、接口路径、请求方法、数据类型、返回数据结构等。

2.swagger常用注解

@RestController
@Api(tags = "图书管理API", description = "用于管理图书馆中图书的API")
public class BookController {
    @ApiOperation(value = "根据ID获取图书", notes = "根据图书ID从图书馆中获取图书")
    @ApiImplicitParam(name = "id", value = "图书ID", required = true, dataType = "Long", paramType = "path")
    @GetMapping("/books/{id}")
    public ResponseEntity<Book> getBookById(@PathVariable Long id) {
        // 省略业务逻辑
    }
    @ApiOperation(value = "更新图书", notes = "更新图书馆中现有的图书")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "图书ID", required = true, dataType = "Long", paramType = "path"),
            @ApiImplicitParam(name = "book", value = "图书对象", required = true, dataType = "Book", paramType = "body")
    })
    @PutMapping("/books/{id}")
    public ResponseEntity<Book> updateBook(@PathVariable Long id, @RequestBody Book book){
        // 省略业务逻辑
    }
}
注解位置说明
@Api类上用于描述该类是"图书管理API",说明整个API的主要作用。
@ApiOperation方法上用于给API方法增加说明,描述每个方法的作用。例如,getBookById方法用于根据ID获取图书,addBook方法用于添加新图书。
@ApiImplicitParam方法入参用于给方法的入参增加说明,描述参数的作用和数据类型。在getBookById和deleteBook方法中,都有一个参数id,通过该注解说明id的作用和数据类型。
@ApiImplicitParams方法上用于包含一组参数说明,可以在一个注解中同时描述多个参数。在updateBook方法中,使用该注解描述两个参数:id表示图书ID,book表示图书对象。
@Data
@ApiModel(value = "封装商品信息对象")
public class Goods implements Serializable {
    @ApiModelProperty(value = "商品id",dataType = "int")
    private Integer id;
}
@ApiModel用在返回对象类上,描述一个Model的信息。在本例中,Book类可能是一个POJO类,用于描述图书的信息。
@ApiModelProperty用于描述一个model的属性。在本例中,如果Book类有其他属性,可以使用该注解为这些属性增加说明。例如,书名、作者、出版日期等。

3.使用Swagger

        使用swagger时,只需要在需要生成接口文档的handler中使用相关注解,swagger就可以自动生成接口文档

3.1 导入swagger依赖

<!--swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!--springfox-swagger-ui
    Springfox Swagger: Spring 基于swagger规范,可以将基于SpringMVC和Spring Boot
    项目的项目代码,自动生成JSON格式的描述文件。-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

3.2 编写swagger配置类

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;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("商品模块API文档")
                .description("采用restful风格接口")
                .version("1.0")
                .build();
    }
    @Bean
    public Docket docket(ApiInfo apiInfo) {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                .apis(RequestHandlerSelectors.basePackage(
                        "com.mall.mall100.controller"))
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

4.访问swagger接口文档

http://localhost:9090/swagger-ui.htmlicon-default.png?t=N6B9http://localhost:8080/swagger-ui.html

image-20210820100803455

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/767917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企企通入选《2023数字化采购发展报告》,持续赋能企业数字化采购

近日&#xff0c;国内知名产业数字化服务平台亿邦智库联合中国物流与采购联合会公共采购分会共同发布了《2023数字化采购发展报告》。 企企通一直以来积极推动企业采购供应链数字化升级和变革&#xff0c;不断通过技术、产品、服务的创新&#xff0c;引领国内采购供应链数字化的…

保持领先竞争对手,从普通变为非凡;为您的Android应用赋能数据结构和算法

数据结构和算法为Android开发提供了基础数据存储和处理的工具。开发者可以根据具体需求选择合适的数据结构和算法&#xff0c;以提高应用的性能、效率和用户体验。Android框架也提供了许多内置的数据结构和算法实现&#xff0c;如Bundle、ArrayAdapter等&#xff0c;以便开发者…

开发工具篇第二十六讲:使用IDEA进行本地调试和远程调试

开发工具篇第二十六讲&#xff1a;使用IDEA进行本地调试和远程调试 Debug用来追踪代码的运行流程&#xff0c;通常在程序运行过程中出现异常&#xff0c;启用Debug模式可以分析定位异常发生的位置&#xff0c;以及在运行过程中参数的变化&#xff1b;并且在实际的排错过程中&am…

【Visual Studio Code】---自定义键盘快捷键设置

概述 一个好的文章能够帮助开发者完成更便捷、更快速的开发。书山有路勤为径&#xff0c;学海无涯苦作舟。我是秋知叶i、期望每一个阅读了我的文章的开发者都能够有所成长。 一、进入键盘快捷键设置 1、进入键盘快捷键设置方法1 使用快捷键进入键盘快捷键设置先按 Ctrl K再…

k8s如何访问 pod 元数据

如何访问 pod 元数据 **我们在 pod 中运行容器的时候&#xff0c;是否也会有想要获取当前 pod 的环境信息呢&#xff1f;**咱们写的 yaml 清单写的很简单&#xff0c;实际上部署之后&#xff0c; k8s 会给我们补充在 yaml 清单中没有写的字段&#xff0c;那么我们的 pod 环境信…

【软件测试】Git 实战详解 - 分支详细,看这篇就够了.,..

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Git 是如何保存数…

【项目 进程3】2.6 exce函数族 2.7 进程退出、孤儿进程、僵尸进程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 2.6 exec函数族介绍&#xff08;execute 执行&#xff09;exec函数族 2.7 进程退出、孤儿进程、僵尸进程进程退出孤儿进程僵尸进程 2.6 exec函数族介绍&#xff08;…

线程系列3-关于 CompletableFuture

线程系列3-关于 CompletableFuture 1、从 Future 接口说起2、CompletableFuture 对 Future 的改进2.1、CompletionStage 接口类2.2、runAsync 和 supplyAsync 创建子任务2.3、 whenComplete 和 exceptionally 异步任务回调钩子2.4、调用 handle() 方法统一处理异常和结果2.5、异…

计讯物联智慧景区应用解决方案,开启交互式智慧旅游新篇章

方案背景 后疫情时代&#xff0c;旅游市场逐步回暖。随着游客的旅游需求趋向个性化、多元化&#xff0c;景区的数字化转型升级势在必行。在此背景下&#xff0c;计讯物联充分发挥5G、云计算、物联网、大数据等技术的应用价值&#xff0c;以技术创新推动业务创新&#xff0c;面…

基于springboot+webservice+mysql实现的物业报修管理系统

基于springbootWebservicemysql实现的物业报修管理系统 一、系统介绍二、功能展示1.添加报修单(业主)2.缴费(业主)3.确定修复(管理员) 三、其它系统四、获取源码 一、系统介绍 系统主要功能&#xff1a; 通过JaxWsDynamicClientFactory调用Webservice接口实现物业报修管理。 业…

Linux·从 URL 输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前&#xff0c;背后到底发生了什么&#xff1f;经历怎么样的一个过程&#xff1f;先给大家来张总体流程图&#xff0c;具体步骤请看下文分解&#xff01; 总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接&#xff1a…

【VUE】拖动侧边栏以便自由调整左右两侧的宽度

效果 &#xff08;1&#xff09;拖动前 &#xff08;2&#xff09;拖动后 主要代码 <template><el-row class"contnet" :gutter"20">// 1. 左侧树<el-col id"left-tree" class"left-tree" :offset"0" :…

文心一言 VS 讯飞星火 VS chatgpt (62)-- 算法导论6.5 1题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;62&#xff09;-- 算法导论6.5 1题 一、试说明 HEAP-EXTRACT-MAX在堆A(15&#xff0c;13&#xff0c;9&#xff0c;5&#xff0c;12&#xff0c;8&#xff0c;7&#xff0c;4&#xff0c;0&#xff0c;6&#xff0c;2&#xff0c…

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术

能源是国民经济发展和人民生活必须的重要物质基础。在过去的200多年里&#xff0c;建立在煤炭、石油、天然气等化石燃料基础上的能源体系极大的推动了人类社会的发展。但是人类在使用化石燃料的同时&#xff0c;也带来了严重的环境污染和生态系统破坏。近年来&#xff0c;世界各…

Docker 仓库与注册表: 构建可靠的容器镜像生态系统

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

leetcode 445. Add Two Numbers II(两数相加)

用链表代表2个数字&#xff0c;这2个数字相加的和用链表返回。 最高位在链表的head. 思路&#xff1a; 1.链表逆序 数字相加是从低位到高位的&#xff0c;然而链表中的数字是从高位指向低位。 所以涉及到链表的逆序。 逆序之后只需从head到tail把两个链表的数字相加&#x…

BCG的Ribbonbar的categroy滚动控制处理方法

重点&#xff1a; 1.BCG的Ribbonbar可以通过鼠标滚轮进行界面滚动变化。 2.想要禁止这个功能&#xff0c;只能通过继承PreTranslateMessage消息&#xff0c;将滚动的消息进行屏蔽即可。它们没有控制滚动的函数处理 class CLbCBCGPRibbonBar : public CBCGPRibbonBar { public…

如何写一个Python三方包供别人使用

第一步&#xff0c;新建文件夹 好的&#xff0c;我们先new一个项目&#xff0c;空文件夹就行&#xff0c;例如新建一个叫my-wheel的项目 第二步&#xff0c;写核心代码 新建一个mywheel的包&#xff0c;包下新建文件example.py def msg():return "a python lib named …

杜冬亮,高考文科状元,从辉煌学海驶向人生新篇章

在众多学子的梦想之路上&#xff0c;总有一些人犹如璀璨的星辰&#xff0c;照亮前行的道路&#xff0c;杜冬亮&#xff08;曾用名&#xff1a;杜惜泽&#xff09;便是其中的一员。他以2004年高考文科状元的辉煌成就&#xff0c;跨越了学海的一座座险峻高峰&#xff0c;为后来的…