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基础篇】方法的使用(方法的使用以及形参实参的关系)

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

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

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

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

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

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

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

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

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

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

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

    2024年02月07日
    浏览(31)
  • 【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日
    浏览(38)
  • JAVA基础 - 如何使用split方法?

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

    2024年02月04日
    浏览(28)
  • Java Stream API的基本使用方法

    Java各个版本所更新的主要内容: 1.Java SE 8:引入了一些新特性,如lambda表达式、Stream API、格式化日期、国际化等。此外,还对并发编程进行了改进,引入了线程安全的 Stream API 。 2.Java SE 9:新增了分布式架构的支持,引入了CompletableFuture、ZK等新特性。此外,还对Jit编译器进

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

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

    2024年02月15日
    浏览(32)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包