Swagger学习⑰——@Link注解

news/2025/1/14 20:27:22/
介绍

@Link 是 Swagger/OpenAPI 3.0 注解库中的一个注解,用于在 OpenAPI 文档中定义链接(Link)。链接是一种在 API 响应中提供相关操作或资源引用的机制,通常用于描述操作之间的关系或提供额外的操作提示。

 @Link 注解的作用

@Link 注解用于在 OpenAPI 文档中定义一个链接,它可以关联到某个操作(Operation)或资源。链接通常用于以下场景:

  • 描述操作之间的关系(例如,创建资源后返回的资源链接)。

  • 提供额外的操作提示(例如,分页查询中的下一页链接)。

  • 实现 HATEOAS(Hypermedia as the Engine of Application State)风格的 API。

源代码

java">
package io.swagger.v3.oas.annotations.links;import io.swagger.v3.oas.annotations.extensions.Extension;
import io.swagger.v3.oas.annotations.servers.Server;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target({ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface Link {String name() default "";String operationRef() default "";String operationId() default "";LinkParameter[] parameters() default {};String description() default "";String requestBody() default "";Server server() default @Server;Extension[] extensions() default {};String ref() default "";
}

@Link 注解的属性

@Link 注解的主要属性如下:

属性名类型描述
nameString链接的名称,必须是唯一的。
operationIdString链接指向的操作的 operationId
operationRefString链接指向的操作的引用(URL 或路径)。
descriptionString链接的描述信息。
requestBodyString链接指向的操作的请求体表达式。
parametersParameter链接指向的操作的参数映射。
serverServer链接指向的服务器的配置。
refString引用外部定义的链接。

示例代码

java">import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.links.Link;
import io.swagger.v3.oas.annotations.links.LinkParameter;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;@RestController
public class DemoController {@Operation(summary = "Get Demo by ID", operationId = "getDemoById")@ApiResponses(value = {@ApiResponse(responseCode = "200",description = "Demo found",links = {@Link(name = "updateDemo ",operationId = "updateDemo",parameters = @LinkParameter(name = "demoId", expression = "$response.body#id")),@Link(name = "deleteDemo",operationId = "deleteDemo",parameters = @LinkParameter(name = "demoId", expression = "$response.body#id"))})})@GetMapping("/demo/{id}")public User getDemoById(@PathVariable Long id) {// 返回Demo 信息return new User(id, "demo Doe");}@Operation(summary = "Update demo by ID", operationId = "updateDemo")@PutMapping("/demo/{id}")public void updateDemo(@PathVariable Long id, @RequestBody Demo user) {// 更新Demo 信息}@Operation(summary = "Delete demo by ID", operationId = "deleteDemo")@DeleteMapping("/demo/{id}")public void deleteDemo(@PathVariable Long id) {// 删除Demo }
}





http://www.ppmy.cn/news/1563117.html

相关文章

计算机网络 (39)TCP的运输连接管理

前言 TCP(传输控制协议)是一种面向连接的、可靠的传输协议,它在计算机网络中扮演着至关重要的角色。TCP的运输连接管理涉及连接建立、数据传送和连接释放三个阶段。 一、TCP的连接建立 TCP的连接建立采用三次握手机制,其过程如下&…

【Linux网络编程】数据链路层 | MAC帧 | ARP协议

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…

深度学习camp-第J7周:对于ResNeXt-50算法的思考

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 📌你需要解决的疑问:这个代码是否有错?对错与否都请给出你的思考 📌打卡要求:请查找相关资料、逐步…

基于element UI el-dropdown打造表格操作列的“更多⌵”上下文关联菜单

<template><div :class"$options.name"><el-table :data"tableData"><el-table-column type"index" label"序号" width"60" /><!-- 主要列 BEGIN---------------------------------------- --&g…

【2025 Rust学习 --- 15 迭代器的消耗】

消耗迭代器 使用带有 for 循环的迭代器&#xff0c;也可以显式调用 next&#xff0c;但有许多常见任务不必一遍又一遍地写出来。Iterator 特型提供了一大组可选方法来涵盖其中的许多任务。 简单累加&#xff1a;count、sum 和 product count&#xff08;计数&#xff09;方法…

[C#] 调用matlab 类型初始值设定项引发异常

我的环境/开发工具&#xff1a;Matlab2016b&#xff08;64位&#xff09;vs2017 报的异常&#xff1a;System.TypeInitializationException:““MathWorks.MATLAB.NET.Arrays.MWNumericArray”的类型初始值设定项引发异常。”。 异常原因&#xff1a;解决方案平台是AnyCPU&am…

WINFORM - DevExpress -> DevExpress总结[安装、案例]

安装devexpress软件 路径尽量不换&#xff0c;后面破解不容易出问题 vs工具箱添加控件例如: ①使用控制台进入DevExpress安装目录: cd C:\Program Files (x86)\DevExpress 20.1\Components\Tools ②添加DevExpress控件&#xff1a; ToolboxCreator.exe/ini:toolboxcreator…

热烈祝贺“钛然科技”选择使用订单日记

感谢珠海钛然科技有限公司选择使用订单日记&#xff01; 珠海钛然科技有限公司&#xff0c;成立于2020年&#xff0c;位于广东省珠海市高新区&#xff0c;是一家以从事研发和生产功能型纳米高分子涂层为主的企业。 在业务不断壮大的过程中&#xff0c;想使用一种既能提升运营…