Swagger使用方法

这篇具有很好参考价值的文章主要介绍了Swagger使用方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.简介


1.什么是swagger
Swagger是一个开放源代码软件框架,由大型工具生态系统支持,可帮助开发人员设计,构建,记录和使用RESTful Web服务。尽管大多数用户通过Swagger UI工具识别Swagger,但是Swagger工具集包括对自动文档,代码生成和测试用例生成的支持。

2.swagger的特征
1. 通过代码和注释自动生成文档。在Swagger框架下,开发人员可对服务进行归类说明,对方法,模型,返回结果等进行详细说明。方便开发人员在编写代码的同时,编写文档信息。自动生成,只需很少的编辑工作,就能获得完整的REST APIs文档

2. 提供了UI界面。既展示接口信息,又提供了参数校验,测试功能

3. 形成了文档规范,支持不同的语言

4. 提供丰富的组件。

3.swagger依赖包

<!--swagger2-->
 <dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
 </dependency>
 <dependency>
     <groupId>io.springfox</groupId>
     <artifactId>springfox-swagger-ui</artifactId>
 </dependency>

二.swagger常用注解


1.@Api
@Api 注解用于标注一个Controller(Class)。在默认情况下,Swagger-Core只会扫描解析具有@Api注解的类,而会自动忽略其他类别资源(JAX-RS endpoints,Servlets等等)的注解。

属性    描述
value    url的路径值
tags    如果设置这个值、value的值会被覆盖
description    对api资源的描述
basePath    基本路径可以不配置
position    如果配置多个Api 想改变显示的顺序位置
produces    For example, "application/json, application/xml"
consumes    For example, "application/json, application/xml"
protocols    Possible values: http, https, ws, wss.
authorizations    高级特性认证时配置
hidden    配置为true 将在文档中隐藏
示例代码:

@Controller
@Slf4j
@RequestMapping("/user")
@Api(tags = "人员信息 API", description = "提供人员信息相关的 Rest API")
public class UserController extends BaseController {
 
}

2.@ApiOperation
@ApiOperation 注解在用于对一个操作或HTTP方法进行描述。具有相同路径的不同操作会被归组为同一个操作对象。不同的HTTP请求方法及路径组合构成一个唯一操作。

主要属性:

属性    描述
value    url的路径值
tags    如果设置这个值、value的值会被覆盖
description    对api资源的描述
basePath    基本路径可以不配置
position    如果配置多个Api 想改变显示的顺序位置
produces    For example, "application/json, application/xml"
consumes    For example, "application/json, application/xml"
protocols    Possible values: http, https, ws, wss.
authorizations    高级特性认证时配置
hidden    配置为true 将在文档中隐藏
response    返回的对象
responseContainer    这些对象是有效的 "List", "Set" or "Map".,其他无效
httpMethod    "GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"
code    http的状态码 默认 200
extensions    扩展属性

3.@ApiParam
@ApiParam作用于请求方法上,定义api参数的注解。

主要属性:

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

public ResponseEntity<User> getUserById(
      @ApiParam(value = "ID of user that needs to be fetched", allowableValues = "range[1,10]", required = true)
      @PathVariable("UserId") Long userId)

4.@ApiImplicitParams、@ApiImplicitParam
@ApiImplicitParams、@ApiImplicitParam 都可以定义参数.

(1).@ApiImplicitParams:用在请求的方法上,包含一组参数说明

(2).@ApiImplicitParam:对单个参数的说明

主要属性:

属性    描述
name    参数名
value    参数的说明、描述
required    参数是否必须必填
paramType    参数放在哪个地方
query --> 请求参数的获取:@RequestParam
header --> 请求参数的获取:@RequestHeader
path(用于restful接口)--> 请求参数的获取:@PathVariable
body(请求体)--> @RequestBody User user
form(普通表单提交)
dataType    参数类型,默认String,其它值dataType="Integer"
defaultValue    参数的默认值
代码示例:

提示:根据dataTtype属性的描述我们的"手机号","密码"都是"String"类型所以我们将其省略

/**
 * <pre>
 *  登录API接口
 * </pre>
 *
 * @since 2022-06-10
 */
@ApiImplicitParams({
        //参数效验
        @ApiImplicitParam(name="phonenum",value="手机号",required=true,paramType="form"),
        @ApiImplicitParam(name="password",value="密码",required=true,paramType="form"),
        @ApiImplicitParam(name="age",value="年龄",required=true,paramType="form",dataType="Integer")
    })
    @PostMapping("/login")
    public ApiResult login(@RequestParam String mobile, @RequestParam String password,
    @RequestParam Integer age){
        //...
        return JsonResult.ok(map);
    }

5.@ApiResponses、@ApiResponse

@ApiResponses、@ApiResponse进行方法返回对象的说明。

主要属性:

属性 描述
code 数字,例如400
message 信息,例如"请求参数没填好"
response 抛出异常的类

 代码示例:

@ApiResponses({
		@ApiResponse(code = 200, message = "请求成功"),
		@ApiResponse(code = 400, message = "请求参数没填好"),
		@ApiResponse(code = 404, message = "请求路径没有或页面跳转路径不对")
	}) 
	@ResponseBody
	@RequestMapping("/user")
	public ApiResult getUser(@RequestParam String userId) {
		...
	}

6.@ApiModel、@ApiModelProperty
@ApiModel用于描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)。

@ApiModelProperty用来描述一个Model的属性

使用场景

@ApiModel 用在模型类上,对模型类作注解

@ApiModelProperty 用在属性上,对属性作注解

代码演示:
 

/**
 * <pre>
 *     人员信息类
 * </pre>
 *
 */
@Data
@ApiModel(description= "返回人员信息")
public class UserQueryVo extends BaseEntity{
 
    @ApiModelProperty(value = "主键", required = true)
    @TableId(value = "id", type = IdType.ID_WORKER)
    private Long id;
    
    @ApiModelProperty(value = "手机号", required = true)
    private String phonenum;
 
    @ApiModelProperty(value = "密码", required = true)
    private String password;
    
    @ApiModelProperty(value = "年龄", required = true)
    private Integer age;
}

三、查看接口文档

在浏览器中访问端口号对应的地址即可查看接口文档
http://localhost:8442/swagger-ui.html#/

四丶 swagger3.0

ps:如果是swagger3.0,会发现该地址无法访问,其实是3.0后 swagger-ui.html的资源位置变了。

下图为swagger2.x与swagger3.0版本的区别:

Swagger使用方法,java

Swagger使用方法,java

 解决方案:
在主程序上添加@EnableOpenApi 并且访问http://localhost:8080/swagger-ui/index.html

 Swagger使用方法,java

注意:在添加@EnableOpenApi 注解时,会报错,这是因为找不到相关依赖。
解决办法:去掉下面依赖

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
    <scope>compile</scope>
</dependency>

添加springfox-boot-starter依赖文章来源地址https://www.toymoban.com/news/detail-641981.html

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
<dependency>

到了这里,关于Swagger使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Java基础篇】方法的使用(方法的使用以及形参实参的关系)

    【Java基础篇】方法的使用(方法的使用以及形参实参的关系)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏 :Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用,数组的使用,类和对象,继承和多态,抽象类和接口等内容 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 方

    2024年02月08日
    浏览(12)
  • java反射的基本使用方法

    当我们使用 Java 开发时,有时需要获取某个类的信息,例如类的属性、方法和构造函数等,然后在程序运行期间动态地操作它们。Java 反射就是用来实现这个目的的一种机制。 Java 反射(Reflection)是 Java 编程语言在运行时动态获取类的信息以及动态调用对象方法的能力。它可

    2024年02月16日
    浏览(13)
  • java的return使用方法

    java的return使用方法

    在java里面return有 三种用法 : 结果: break :用来跳出循环的.例如for循环,while循环,do-while循环等各种循环体,我们都可以使用break来跳出,但是如果我们是打算跳出函数的话,不能使用break,因为break不能跳出函数。 return :使整个函数返回的,后面不管是循环里面还是循环外

    2024年02月08日
    浏览(7)
  • Java——Switch的使用方法

    在分支结构中,我们除了使用if-else或者是if-else if之外,当分支量过大的时候,我们即可选择使用switch语句进行选择。 当我们需要实现输入 1 1 1 的时候打印出Hello,输入 2 2 2 的时候打印出World,输入其他数字的时候打印出error。 在switch语法中,switch()圆括号中写入判断的数字

    2024年02月07日
    浏览(10)
  • 【Java基础篇】方法的使用(方法的重载和递归)

    【Java基础篇】方法的使用(方法的重载和递归)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏 :Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用,数组的使用,类和对象,继承和多态,抽象类和接口等内容 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 在

    2024年02月09日
    浏览(13)
  • Java-方法的使用

    Java-方法的使用

    本章重点: 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 4. 掌握递归 1.1 什么是方法(method) 方法就是一个代码片段. 类似于 C 语言中的 \\\"函数\\\"。方法存在的意义(不要背, 重在体会): 1. 是能够模块化的组织代码(当代码规模比较复杂的时候). 2. 做到代码被重复使用

    2024年02月07日
    浏览(11)
  • 【JavaSE】Java方法的使用

    【JavaSE】Java方法的使用

    【本节目标】 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 4. 掌握递归 目录 1.方法概念及使用 1.1什么是方法(method) 1.2 方法定义 1.3 方法调用的执行过程 1.4 实参和形参的关系 2. 方法重载 2.1 为什么需要方法重载 2.2 方法重载概念 3. 递归 3.1 生活中的故事 3.2 递

    2024年02月12日
    浏览(15)
  • JAVA基础 - 如何使用split方法?

    写在前面 在工作中一直使用split进行字串的分隔,但是始终没有认真研究过该方法,今天在使用该方法时遇到了一些问题,特进行学习记录。 遇到的问题 在使用“|”作为字串的分隔符的时候,分隔结果和预期不一样。 方法定义 // 从方法的实现上, 可以了解split的参数可以是

    2024年02月04日
    浏览(10)
  • 关于java中PriorityQueue类的使用方法

    今天做了力扣的每日一题 ==》 2208. 将数组和减半的最少操作次数  起初我用数组这个死方法去做这个题,代码写出来了,不过在最后运行的时候超时了。看大佬的解答中,我发现了这个类,之前从来都没看到过,所以学习了一下,写这篇文章记一下。 目录 前言 一、Priori

    2024年02月15日
    浏览(11)
  • Java中DateTimeFormatter的使用方法和案例

    Java中DateTimeFormatter的使用方法和案例

    🔔简介 在Java中,DateTimeFormatter类用于格式化和解析日期时间对象。它是日期时间格式化的强大而灵活的工具。 🔔作用 🌵1.本地化时间 本地化时间指根据指定的语言环境显示时间 1.1.创建DateTimeFormatter时指定Locale 1.2.使用该DateTimeFormatter格式化日期时间 1.3.可以通过Locale.US、L

    2024年02月08日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包