Swagger Springboot Idea Swagger的API详解(二)

本文介绍了Swagger在Springboot项目中的使用,重点讲解了@Api、@ApiOperation注解的用途和属性,以及如何用它们来描述接口功能。同时,提到了@ApiParam、@ApiImplicitParam、@ApiModel和@ApiModelProperty等注解,用于参数和实体类的说明。还简要提及了@ApiResponses、@ApiResponse和@ResponseHeader用于配置返回信息和响应头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一章:Swagger Springboot Idea 基础配置(一)

上一章讲述了Springboot+Idea+JDK8配置一个简单的Swagger访问页面,

接下来,详细解释一下Swagger中配置的常用的api

注解功能

@Api   

作用于类,描述类,不用不扫描
@ApiOperation作用于方法,描述方法
@ApiParam作用于参数,描述参数
@ApiImplicitParam 和 @ApiImplicitParams 作用于参数,描述参数
@ApiModel 作用于类,描述实体类
@ApiModelProperty作用于字段,描述字段属性

1、@Api

  用在类上,说明这个类的作用,如果类不配置,则swagger默认不扫描该类,如上图中的展示

@Api(tags = "SwaggerTest", description = "swagger展示的接口调用")

其中的属性:常用为加粗

属性名称 备注
valueurl的路径值
tagsAPI分组标签。具有相同标签的API将会被归并在一组内展示,如果设置这个值、value的值会被覆盖
description对api资源的描述,显示过期,但是可以使用
basePath基本路径可以不配置
position如果配置多个Api 想改变显示的顺序位置
producesFor example, "application/json, application/xml"
consumesFor example, "application/json, application/xml"
protocolsPossible values: http, https, ws, wss.
authorizations高级特性认证时配置
hidden配置为true 将在文档中隐藏

 

 

2、@ApiOperation

  用在方法上,说明方法的作用,一般搭配@GetMapping 、 @PostMapping 、 @PutMapping 、@DeleteMapping  通过不同的http method 区分使用

  • GET(SELECT):从服务器查询资源(一项或多项)

  • POST(CREATE):在服务器新建一个资源

  • PUT(UPDATE):在服务器更新一个资源【较少使用】

  • DELETE(DELETE):从服务器删除资源【较少使用】

@GetMapping("getTest")
@ApiOperation(value = "获取信息")

其中的属性:常用为加粗

属性名称备注
valueurl的路径值
tags如果设置这个值、value的值会被覆盖
description对api资源的描述
basePath基本路径可以不配置
position如果配置多个Api 想改变显示的顺序位置
producesFor example, "application/json, application/xml"
consumesFor example, "application/json, application/xml"
protocolsPossible values: http, https, ws, wss.
authorizations高级特性认证时配置
hidden配置为true 将在文档中隐藏
response返回的对象
responseContainer这些对象是有效的 "List", "Set" or "Map".,其他无效
httpMethod"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH",新版本不用单独配置,使用@GetMapping可自动扫描出来
codehttp的状态码 默认 200
extensions扩展属性

 

 

3、@ApiParam标记

  增加对参数的说明

    @GetMapping("getTest")
    @ApiOperation(value = "获取信息")
    public String getTest(
            @ApiParam(name = "target", value = "target", required = true) @RequestParam("target")
                    String target) {
        
        return "信息" + target;
    }

其中的属性:常用为加粗

属性名称备注
name属性名称
value属性值
defaultValue默认属性值
allowableValues可以不配置
required是否属性必填
access不过多描述
allowMultiple默认为false
hidden隐藏该属性
example举例

 

3-1@ApiImplicitParam 和 @ApiImplicitParams 

同样使用在参数的的还有另一个注解@ApiImplicitParam   和 @ApiImplicitParams  使用方法同下,具体使用那个看使用习惯了,如果只有一个参数只需要配置@ApiImplicitParam就可以了

    @PostMapping("postTest")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "username", value = "账号", dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "password", value = "密码", dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "type", value = "类型", dataType = "String", paramType = "query")
    })
    @ApiOperation(value = "新增信息")
    public String postTest(String username, String password, String type) {
        return "新增信息" + username + password + type;
    }

其中的属性:常用为加粗

属性名称备注
name参数名
value参数的汉字说明,解释
required是否属性必填
paramType

参数放在哪个地方,查询参数类型,这里有几种形式:

  1. header --> 请求参数的获取:@RequestHeader,参数在request headers 里边提交

  2. query --> 请求参数的获取:@RequestParam,直接跟参数,完成自动映射赋值

  3. path(用于restful接口)--> 请求参数的获取:@PathVariable,以地址的形式提交数据

  4. body(不常用)--> 以流的形式提交 仅支持POST

  5. form(不常用)--> 以form表单的形式提交 仅支持POST

dataType参数类型,默认String,其它值dataType="Integer"
defaultValue参数的默认值

 

 

4、@ApiModel 和 @ApiModelProperty

  描述一个实体类的信息,一般接参或者给前端返回是实体类对象时候,在实体类对象上加的注解

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data//lombok注解,代替get和set方法
@ApiModel(value = "Person", description = "人员实体类")
public class Person {

    @ApiModelProperty(value = "id", required = false, example = "1")
    private Integer id;

    @ApiModelProperty(value = "用户名", required = true, example = "张三")
    private String userName;

    @ApiModelProperty(value = "密码", required = true, example = "123456")
    private String passWord;

}

 

@ApiModel 对应属性

属性名称数据类型默认值说明
valueString类名为模型提供备用名称
descriptionString“”提供详细的类描述
parentClass<?> parentVoid.class为模型提供父类以允许描述继承关系
discriminatoryString“”支持模型继承和多态,使用鉴别器的字段的名称,可以断言需要使用哪个子类型
subTypesClass<?>[]{}从此模型继承的子类型数组
referenceString“”指定对应类型定义的引用,覆盖指定的任何其他元数据

 

@ApiModelProperty对应属性

属性名称数据类型默认值说明
valueString“”属性简要说明
nameString“”运行覆盖属性的名称。重写属性名称
allowableValuesString“”限制参数可接收的值,三种方法,固定取值,固定范围
accessString“”过滤属性,参阅:io.swagger.core.filter.SwaggerSpecFilter
notesString“” 
dataTypeString“”参数的数据类型,可以是类名或原始数据类型,此值将覆盖从类属性读取的数据类型
requiredbooleanfalse是否为必传参数,false:非必传参数; true:必传参数
positionint0允许在模型中显示排序属性
hiddenbooleanfalse隐藏模型属性,false:不隐藏; true:隐藏
exampleString“”属性的示例值
readOnlybooleanfalse指定模型属性为只读,false:非只读; true:只读
referenceString“”指定对应类型定义的引用,覆盖指定的任何其他元数据
allowEmptyValuebooleanfalse允许传空值,false:不允许传空值; true:允许传空值

个人而言一般就是用这么多,因为返回值不配置Swagger也是会自动扫描的,如果返回是对象,有@ApiModel也就可以了

但是为了可能用到的同学到处找不到,功能如下

@ApiResponses 和 @ApiResponse

配置返回信息,作用于方法上

    @PutMapping("postTest2")
    @ApiResponses({@ApiResponse(code = 200, message = "成功")
            , @ApiResponse(code = 400, message = "失败")})
    @ApiOperation(value = "新增信息")
    public String postTest2() {
        return "测试返回值";
    }

@ApiResponse 对应属性    @ApiResponses 的属性就是多个@ApiResponse

属性名称备注
codehttp的状态码
message描述
response默认响应类 Void
reference参考ApiOperation中配置
responseHeaders参考 ResponseHeader 属性配置说明
responseContainer参考ApiOperation中配置

@ResponseHeader

响应头设置,使用方法

@ResponseHeader(name="head1",description="response head conf")
属性名称备注
name响应头名称
description头描述
response默认响应类 Void
responseContainer参考ApiOperation中配置

 

本文大量抄袭+整合,所用到的博文地址如下,如不能抄袭,保证立刻删除整改:

https://www.jianshu.com/p/12f4394462d5

https://juejin.cn/post/6844903901724950535

https://blog.youkuaiyun.com/dejunyang/article/details/89527348

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值