当前位置:首页 > 科技  > 软件

前后端分离项目必备——自动生成API文档神器Swagger

来源: 责编: 时间:2023-09-21 20:48:13 389观看
导读Swagger的故事随着Web服务的发展,RESTful风格的API越来越受到开发者的青睐,因为它简单且符合Web的本质。Spring框架也不落人后,提供了一个名为Spring MVC的模块,用于支持RESTful API的开发。Spring MVC是一个基于注解的We

Swagger的故事

随着Web服务的发展,RESTful风格的API越来越受到开发者的青睐,因为它简单且符合Web的本质。Spring框架也不落人后,提供了一个名为Spring MVC的模块,用于支持RESTful API的开发。Spring MVC是一个基于注解的Web框架,让开发者可以使用简洁且优雅的方式定义和实现API。and28资讯网——每日最新资讯28at.com

然而Spring MVC并没有提供一个方便且标准的方式来描述和文档化API,这给API的管理和维护带来了一定的困难。为了解决这个问题,一个名为Swagger的项目诞生了。Swagger是由Tony Tam在2010年创建的一个开源项目,旨在为RESTful API提供一个规范且完整的框架4。Tony Tam是一个资深的Java开发者,他在使用Spring MVC开发API时感受到了它的优点和缺点,所以他决定创建一个可以与Spring MVC无缝集成的工具,来帮助开发者更好地设计、描述、调用和可视化API。and28资讯网——每日最新资讯28at.com

Swagger项目很快就得到了开源社区和业界的认可和支持,成为了最流行的API开发工具之一。Swagger项目也不断地演进和完善,涵盖了各种语言和框架,如Python, Ruby, Node.js, Django, Rails等。Swagger项目也不断地与其他标准和工具集成,如OpenAPI Specification, Postman, Apigee等。and28资讯网——每日最新资讯28at.com

Swagger的作用

Swagger的主要作用是为RESTful风格的Web服务提供一个标准且完整的框架,包括以下几个方面:and28资讯网——每日最新资讯28at.com

  • 生成:Swagger可以根据代码或者手动编写的规范文件,自动生成API文档,包括请求参数、响应结果、错误码等信息。这样可以节省编写文档的时间,也可以保证文档和代码的一致性。
  • 描述:Swagger可以使用一种结构化的语言(如YAML或JSON)来描述API的元数据,如接口名称、路径、方法、参数类型、返回值类型等。这样可以方便地对API进行管理和维护,也可以方便地进行版本控制和协作开发。
  • 调用:Swagger可以提供一个可视化的用户界面(如Swagger UI),让用户可以直接在浏览器中对API进行测试和调试,而不需要使用其他的工具(如Postman或curl)。这样可以提高开发效率,也可以方便地验证API的功能和性能。
  • 可视化:Swagger可以提供一个图形化的用户界面(如Swagger Editor),让用户可以以图形化的方式编辑和查看API规范文件,而不需要关心语法细节。这样可以提高用户体验,也可以方便地进行错误检查和修正。

Swagger的好处

Swagger作为一个流行且成熟的API开发工具,它有以下几个好处:and28资讯网——每日最新资讯28at.com

  • 标准化:Swagger遵循OpenAPI规范,这是一个业界公认且广泛使用的RESTful API描述标准。使用Swagger可以保证API的兼容性和互操作性,也可以方便地与其他遵循OpenAPI规范的工具集成。
  • 灵活性:Swagger支持多种编程语言和框架,如Java, Python, Ruby, Node.js, Spring, Django, Rails等。使用Swagger可以根据不同的需求和场景选择合适的技术栈,也可以轻松地迁移和重构代码。
  • 易用性:Swagger提供了丰富且易用的工具和用户界面,让用户可以快速地创建、修改、查看和测试API。使用Swagger可以降低API开发的门槛和难度,也可以提高API开发的质量和效率。

Swagger项目现在已经成为了一个庞大且活跃的生态系统,包括以下几个部分:and28资讯网——每日最新资讯28at.com

  • Swagger Core:提供了一系列的库和工具,用于生成、解析、验证和转换Swagger规范文件。
  • Swagger UI:提供了一个可视化的用户界面,用于展示、测试和调试API。
  • Swagger Editor:提供了一个图形化的用户界面,用于编辑和查看Swagger规范文件。
  • Swagger Codegen:提供了一个代码生成器,用于根据Swagger规范文件生成客户端和服务端代码。
  • Swagger Inspector:提供了一个在线工具,用于检查、测试和分析API。
  • Swagger Hub:提供了一个在线平台,用于协作、管理和发布API。

Springboot使用Swagger3生成API文档

步骤说明and28资讯网——每日最新资讯28at.com

  • 在pom.xml文件中添加springdoc-openapi-ui依赖,这是一个支持OAS 3.0的Swagger UI库,它可以自动集成到Spring Boot应用中,并提供一个可视化的用户界面来展示、测试和调试API。
  • 在配置类中添加@OpenAPIDefinition注解,并定义一些API的基本信息,如标题、描述、版本、联系人等。
  • 在控制器类中添加@Tag注解,并定义一些API的分组信息,如名称、描述等。
  • 在方法上添加@Operation注解,并定义一些API的操作信息,如摘要、描述、响应等。
  • 在参数上添加@Parameter注解,并定义一些API的参数信息,如名称、描述、是否必填、示例等。
  • 在模型类上添加@Schema注解,并定义一些API的模型信息,如名称、描述、属性等。

注意:and28资讯网——每日最新资讯28at.com

对于2.x.x版本,访问地址为:http://localhost:8080/{context-path}/swagger-ui.htmland28资讯网——每日最新资讯28at.com

对于3.x.x版本,访问地址为:http://localhost:8080/{context-path}/swagger-ui/index.htmland28资讯网——每日最新资讯28at.com

其中,localhost是你的本地主机名,8080是你的项目端口号,{context-path}是你的项目上下文路径。你需要根据你的实际情况来替换这些参数。and28资讯网——每日最新资讯28at.com

例如,如果你的项目端口号是8081,上下文路径是demo,Swagger版本是3.0.0,那么你可以访问以下地址来查看Swagger UI界面:and28资讯网——每日最新资讯28at.com

http://localhost:8081/demo/swagger-ui/index.htmland28资讯网——每日最新资讯28at.com

pom.xml文件

<dependencies>    <!-- Spring Boot Starter -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <!-- springdoc-openapi-ui -->    <dependency>        <groupId>org.springdoc</groupId>        <artifactId>springdoc-openapi-ui</artifactId>        <version>1.5.12</version>    </dependency></dependencies>

配置类

// 配置类@Configuration@OpenAPIDefinition(        info = @Info(                title = "Swagger3示例API",                description = "这是一个使用Swagger3来开发Spring Boot应用中的API的示例",                version = "1.0",                contact = @Contact(                        name = "张三",                        email = "zhangsan@example.com",                        url = "1"                )        ))public class SwaggerConfig {}

控制器类

// 控制器类@RestController@RequestMapping("/user")@Tag(name = "用户管理API", description = "提供用户相关的操作")public class UserController {    @GetMapping("/{id}")    @Operation(summary = "根据ID查询用户信息", description = "返回用户实体对象")    @ApiResponse(responseCode = "200", description = "查询成功")    @ApiResponse(responseCode = "404", description = "用户不存在")    public User getUserById(@PathVariable("id") @Parameter(description = "用户ID", required = true, example = "1") Long id) {        // 模拟查询数据库        User user = new User();        user.setId(id);        user.setName("张三");        user.setAge(18);        return user;    }    @PostMapping("/")    @Operation(summary = "添加用户信息", description = "返回添加结果")    @ApiResponse(responseCode = "200", description = "添加成功")    @ApiResponse(responseCode = "400", description = "参数错误")    public String addUser(@RequestBody @Parameter(description = "用户实体对象", required = true) User user) {        // 模拟插入数据库        return "添加成功";    }}

用户实体类

// 用户实体类@Schema(name = "用户实体类", description = "用户的基本信息")public class User {    @Schema(description = "用户ID")    private Long id;    @Schema(description = "用户姓名")    private String name;    @Schema(description = "用户年龄")    private Integer age;    // 省略getter和setter方法}

and28资讯网——每日最新资讯28at.com

Swagger注解总结:

Swagger注解有以下几种类型:and28资讯网——每日最新资讯28at.com

  • 类级别的注解:用于标识一个类是Swagger的资源,可以设置一些全局的属性,如tags、value等。常用的类级别的注解有@Api。
  • 方法级别的注解:用于标识一个方法是一个http请求的操作,可以设置一些操作相关的属性,如value、notes、response等。常用的方法级别的注解有@ApiOperation、@ApiResponses、@ApiResponse等。
  • 参数级别的注解:用于标识一个方法的参数或者一个字段是API的参数,可以设置一些参数相关的属性,如value、required、example等。常用的参数级别的注解有@ApiParam、@ApiImplicitParam等。
  • 模型级别的注解:用于标识一个类是API的模型,可以设置一些模型相关的属性,如value、description等。常用的模型级别的注解有@ApiModel、@ApiModelProperty等。
  • 忽略级别的注解:用于标识一个类或者方法被忽略,不显示在Swagger文档上。常用的忽略级别的注解有@ApiIgnore。

下面是一个对Swagger常用注解的总结表格:and28资讯网——每日最新资讯28at.com

and28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-10899-0.html前后端分离项目必备——自动生成API文档神器Swagger

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 深入浅出:分布式、CAP 和 BASE 理论

下一篇: JavaScript 终于原生支持数组分组了!

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • 2299元起!iQOO Pad开启预售:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其搭载了天玑
  • iQOO Neo8系列新品发布会

    旗舰双芯 更强更Pro
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top