首页 > 其他分享 >使用Swagger 3注解编写API文档详解

使用Swagger 3注解编写API文档详解

时间:2024-07-01 14:55:53浏览次数:3  
标签:description 用户 API ResponseEntity 注解 Swagger id 详解

在现代软件开发中,API文档的编写是至关重要的一环,它不仅能帮助开发者理解和正确使用API,还能提升团队协作效率。Swagger 3是一个流行的API文档规范,通过注解的方式可以清晰地定义API的各个方面。本文将深入探讨Swagger 3中常用的注解及其使用方法。

@OpenAPIDefinition 和 @Info

@OpenAPIDefinition 注解用于定义整个API文档的基本信息,通常应用于类或接口。

  • 属性:
    • info:指定 @Info 注解的对象,用于描述API文档的基本信息。

@Info 注解用于定义API文档的基本信息。

  • 属性:
    • title:API的标题。
    • description:API的描述。
    • version:API的版本号。
    • termsOfService:服务条款的URL。
    • contact:指定 @Contact 注解的对象,用于描述联系人信息。
    • license:指定 @License 注解的对象,用于描述许可证信息。
@OpenAPIDefinition(info = @Info(
    title = "用户管理API",
    description = "用于管理用户信息的API接口文档",
    version = "1.0.0",
    termsOfService = "https://example.com/terms",
    contact = @Contact(name = "API支持", url = "https://example.com/support", email = "[email protected]"),
    license = @License(name = "Apache 2.0", url = "http://www.apache.org/licenses/LICENSE-2.0.html")
))
@Tag

@Tag 注解用于给API分组,类似于为API文档添加标签,便于组织和查找。

  • 属性:
    • name:分组的名称。
    • description:分组的描述。
@Tag(name = "用户管理", description = "用于管理用户信息的API")
@Operation 和 @ApiResponse

@Operation 注解用于描述API的操作,通常应用于方法上。

  • 属性:
    • summary:操作的摘要信息。
    • description:操作的详细描述。
    • tags:指定 @Tag 注解的对象数组,用于将操作归类到特定的分组。
    • parameters:指定 @Parameter 注解的对象数组,用于描述操作的输入参数。
    • responses:指定 @ApiResponse 注解的对象数组,用于描述操作的响应结果。
    • requestBody:指定 @RequestBody 注解的对象,用于描述操作的请求体。
@Operation(summary = "根据ID获取用户信息", description = "根据用户ID查询用户的详细信息")
@ApiResponse(responseCode = "200", description = "成功获取用户信息")
@ApiResponse(responseCode = "404", description = "未找到对应用户")
@Parameter 和 @RequestBody

@Parameter 注解用于描述API操作的输入参数。

  • 属性:
    • name:参数的名称。
    • in:参数的位置,可以是 path、query、header、cookie 中的一种。
    • description:参数的描述。
    • required:参数是否必需,默认为 false。
    • schema:指定 @Schema 注解的对象,用于描述参数的数据类型。

@RequestBody 注解用于描述API操作的请求体。

  • 属性:
    • required:请求体是否必需,默认为 false。
    • content:指定 @Content 注解的对象数组,用于描述请求体的内容。
public ResponseEntity<User> getUserById(@PathVariable("id") Long id)
@Schema

@Schema 注解用于描述数据模型的属性,可用于方法、类、接口。

  • 属性:
    • title:数据模型的标题。
    • description:数据模型的描述。
    • type:数据模型的类型。
    • format:数据模型的格式。
@Schema(title = "用户信息", description = "描述用户的基本信息")
public class User {
    // User类的字段和方法
}

示例代码分析

下面是一个示例代码,演示了如何使用Swagger 3注解来编写API文档:

@RestController
@RequestMapping("/api/users")
@Tag(name = "用户管理", description = "用于管理用户信息")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    @Operation(summary = "根据ID获取用户信息", description = "根据用户ID查询用户的详细信息")
    @ApiResponse(responseCode = "200", description = "成功获取用户信息")
    @ApiResponse(responseCode = "404", description = "未找到对应用户")
    public ResponseEntity<User> getUserById(@PathVariable("id") Long id) {
        User user = userService.getUserById(id);
        if (user != null) {
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }

    @PostMapping
    @Operation(summary = "创建用户", description = "创建新用户")
    @ApiResponse(responseCode = "201", description = "成功创建用户")
    public ResponseEntity<User> createUser(@RequestBody CreateUserRequest request) {
        User user = userService.createUser(request);
        return ResponseEntity.status(HttpStatus.CREATED).body(user);
    }

    @PutMapping("/{id}")
    @Operation(summary = "更新用户信息", description = "根据用户ID更新用户的信息")
    @ApiResponse(responseCode = "200", description = "成功更新用户信息")
    @ApiResponse(responseCode = "404", description = "未找到对应用户")
    public ResponseEntity<User> updateUser(@PathVariable("id") Long id, @RequestBody UpdateUserRequest request) {
        User user = userService.updateUser(id, request);
        if (user != null) {
            return ResponseEntity.ok(user);
        } else {
            return ResponseEntity.notFound().build();
        }
    }

    @DeleteMapping("/{id}")
    @Operation(summary = "删除用户", description = "根据用户ID删除用户")
    @ApiResponse(responseCode = "204", description = "成功删除用户")
    @ApiResponse(responseCode = "404", description = "未找到对应用户")
    public ResponseEntity<Void> deleteUser(@PathVariable("id") Long id) {
        boolean deleted = userService.deleteUser(id);
        if (deleted) {
            return ResponseEntity.noContent().build();
        } else {
            return ResponseEntity.notFound().build();
        }
    }
}

通过上述示例,我们详细介绍了Swagger 3注解在API文档编写中的应用,包括基本信息定义、API分组、操作描述、参数定义、响应结果描述等方面。这些注解不仅使得API文档更加清晰和易读,同时也提升了开发团队的协作效率和代码的可维护性。

标签:description,用户,API,ResponseEntity,注解,Swagger,id,详解
From: https://blog.csdn.net/run65536/article/details/140101280

相关文章

  • Spring Boot 全局异常捕获机制详解
    在SpringBoot中,全局异常捕获机制是处理RESTHTTP请求时的一个重要功能,它可以确保所有未被捕获的异常都能被统一处理。本文将深入探讨SpringBoot中全局异常捕获的实现,从请求进入到异常处理的全过程。请求处理流程概述请求进入DispatcherServlet:所有HTTP请求首先到达......
  • BEV感知算法:LSS论文与代码详解
    BEV感知算法:LSS论文与代码详解0. 前言最近几年,BEV感知是自动驾驶领域中一个非常热门研究方向,其核心思想是把多路传感器的数据转换到统一的BEV空间中去提取特征,实现目标检测、地图构建等任务。如何把多路相机的数据从二维的图像视角转换到三维的BEV视角?LSS提出一种显示估......
  • DWA(Dynamic Window Approach)局部路径规划算法详解及代码实现
    DWA(Dynamic Window Approach)局部路径规划算法详解及代码实现二、算法原理一句话概况,就是假定机器人当前以若干组容许范围内的速度(差速轮为例:线速度V,角速度W)进行移动,并对这若干组速度进行轨迹计算,得到若干组轨迹,再根据若干条评分机制选择最好的轨迹所对应的速度作为dwa输......
  • vue前端项目补充API设计、安全性、状态管理、前端路由等功能
    为了完善前端项目,我们需要考虑API设计、安全性、状态管理和前端路由等方面。以下是如何集成这些功能的基本步骤。API设计定义API接口:根据后端服务提供的API,在前端项目中定义相应的接口函数。使用axios或其他HTTP客户端库来发送请求。封装API请求:创建一个服务模块......
  • Dubbo 协议详解
    Solomon_肖哥弹架构跟大家“弹弹”分布式微服务Dubbo协议详解欢迎点赞,收藏,关注。关注本人的公众号Solomon肖哥弹架构获取更多的惊喜协议的概念协议是两个网络实体进行通信的基础,数据在网络上从一个实体传输到另一个实体,以字节流的形式传递到对端。在这个字节流的......
  • c指针详解(2)--- 指针与数组
    在大致了解了c语言中变量在内存中的分配、存活等方面后,我们再来看看数组在内存中又是如何呈现的。这里我们就只讨论静态数组,动态数组涉及到动态内存分配,这里就不详细展开了。那么什么是静态数组呢?要理解这个数据结构,我们可以将其切分为两个概念:静态与数组。数组:数组其实就是一......
  • Stable Diffusion之最全详解图解
    稳定扩散(StableDiffusion)是指在图论和网络科学领域中,一种基于随机漫步的扩散模型。该模型可以用来描述节点在网络上的扩散过程,例如信息传播、疾病传播等。稳定扩散模型的基本思想是,节点在网络上随机选择邻居节点进行转移,转移概率与节点之间的连接强度相关。具体来说,稳定扩散......
  • Swagger php注解常用语法梳理
    Swaggerphp注解常用语法梳理快速编写你的RESTFULAPI接口文档工具,通过注释定义接口和模型,可以和代码文件放置一起,也可以单独文件存放。Swagger优势通过代码注解定义文档,更容易保持代码文档的一致性模型复用,减少文档冗余,带来更可靠的文档提供客户端访问接口,可以直接......
  • 简单实现Ai音乐suno-api
    本文由ChatMoney团队出品前言在科技与艺术的交汇处,AI音乐创作正以其独特的魅力,引领着音乐产业的一次革命。不久前,AI音乐的浪潮席卷了整个创意领域,激发了无数音乐爱好者和技术开发者的无限想象。在这场音乐与科技的盛宴中,主流的AI音乐平台suno无疑成为了焦点,尽管它尚未对外开放A......
  • [淘宝/天猫/1688/京东]API接口数据采集分享
    在当今时代,从数据中挖掘价值的重要性愈发凸显,远超以往任何时期。随着新冠疫情的席卷,所有B2B公司都迎来了前所未有的挑战,它们不得不迅速将业务转移到线上的电子商务平台,以加速数字化转型的步伐。而随着疫情的逐渐缓解,这种线上线下的融合趋势非但没有减弱,反而得到了进一步的强化。......