首页 > 其他分享 >Springboot 整合Swagger Swagger使用教程

Springboot 整合Swagger Swagger使用教程

时间:2023-07-20 13:11:23浏览次数:55  
标签:教程 return Springboot value private Result Swagger id

swagger使用教程——快速使用swagger

一、swagger简介

官网:https://swagger.io/

1、认识swagger

swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RestFul风格的web服务,总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器断的代码,允许API来始终保持同步。

作用:

  1. 接口的文档在线自动生成。

  2. 功能测试。

2、Swagger是一组开源项目,其中主要要项目如下:

Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。

Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。

Swagger-js: 用于JavaScript的Swagger实现。

Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。

Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。

Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。

二、SpringBoot集成Swagger

1、新建SpringBoot项目,导入swagger依赖

 <!--swagger依赖-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!--swagger ui-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

2、编写swagger的配置文件

@Configuration
@EnableSwagger2
public class Swagger2Config {
    /**创建API应用
      apiInfo() 增加API相关信息
        * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
           指定扫描的包路径来定义指定要建立API的目录。*/ 

      @Bean
      public Docket coreApiConfig(){
               return new Docket(DocumentationType.SWAGGER_2)
               .apiInfo(adminApiInfo())
               .groupName("adminApi")
               .select()
               //只显示admin下面的路径
               .paths(Predicates.and(PathSelectors.regex("/admin/.*")))
               .build();
                   }

    private ApiInfo adminApiInfo(){
        return new ApiInfoBuilder()
                .title("尚融宝后台管理系统--api文档")
                .description("尚融宝后台管理系统接口描述")
                .version("1.0")
                .contact(new Contact("ljd","http://baidu.com","[email protected]"))
                .build();
    }

}

3、添加文档内容

在完成了上述配置后,其实已经可以生产文档内容,但是这样的文档主要针对请求本身,描述的主要来源是函数的命名,通常需要自己增加一些说明来丰富文档内容。

Swagger使用的注解及其说明:

@Api:用在类上,说明该类的作用。
@ApiOperation:注解来给API增加方法说明。
@ApiParam:定义在参数上
@ApiResponses:用于表示一组响应
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
l code:数字,例如400
l message:信息,例如"请求参数没填好"
l response:抛出异常的类

@ApiModel:描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)

l @ApiModelProperty:描述一个model的属性

@ApiImplicitParams: 用在方法上包含一组参数说明。

@ApiImplicitParam:用来注解来给方法入参增加说明。

@ApiImplicitParam的参数说明:

paramType:指定参数放在哪个地方 header:请求参数放置于Request Header,使用@RequestHeader获取 query:请求参数放置于请求地址,使用@RequestParam获取 path:(用于restful接口)–>请求参数的获取:@PathVariable body:(不常用) form(不常用)
name:参数名
dataType:参数类型
required:参数是否必须传 true | false
value:说明参数的意思
defaultValue:参数的默认值
案例:

//实体类
//entity的实体类中可以添加一些自定义设置
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="IntegralGrade对象", description="积分等级表")
public class IntegralGrade implements Serializable {
private static final long serialVersionUID = 1L;

@ApiModelProperty(value = "编号")
  @TableId(value = "id", type = IdType.AUTO)
private Long id;

@ApiModelProperty(value = "积分区间开始")
private Integer integralStart;

@ApiModelProperty(value = "积分区间结束")
private Integer integralEnd;

@ApiModelProperty(value = "借款额度")
private BigDecimal borrowAmount;

@ApiModelProperty(value = "创建时间")
private LocalDateTime createTime;

@ApiModelProperty(value = "更新时间")
private LocalDateTime updateTime;

@ApiModelProperty(value = "逻辑删除(1:已删除,0:未删除)")
@TableField("is_deleted")
@TableLogic
private Boolean deleted;
}
//controler层
@RestController
@RequestMapping("/admin/integralGrade")
@Api(value = "积分等级管理")
public class IntegralGradeController {@Resource
private IntegralGradeService integralGradeService;

@GetMapping("/list")
@ApiOperation("积分等级列表")
public Result listAll(){
    List<IntegralGrade> list = integralGradeService.list();
    return Result.ok().data("list",list);
}

@DeleteMapping("/remove/{id}")
@ApiOperation(value = "根据id删除积分等级",notes = "逻辑删除")
public Result removeById(
    @ApiParam(value = "数据id",required = true,example = "1")
    @PathVariable Long id){
    boolean result = integralGradeService.removeById(id);
    if (result){
        return Result.ok().message("删除成功");
    }else {
        return Result.error().message("删除失败");
    }
}

@PostMapping("/save")
@ApiOperation(value = "新增积分等级")
public Result save(@ApiParam(value = "积分等级对象",required = true) @RequestBody IntegralGrade integralGrade){
    boolean result = integralGradeService.save(integralGrade);
    if (result){
        return Result.ok().message("新增成功");
    }else {
        return Result.error().message("新增失败");
    }
}

@PutMapping("/updateById")
@ApiOperation(value = "根据id修改积分等级")
public Result updateById(@ApiParam(value = "积分等级对象",required = true) @RequestBody IntegralGrade integralGrade){
    boolean result = integralGradeService.updateById(integralGrade);
    if (result){
        return Result.ok().message("修改成功");
    }else {
        return Result.error().message("修改失败");
    }
}

@GetMapping("/getById/{id}")
@ApiOperation(value = "根据id查询积分等级")
public Result getById(@ApiParam(value = "数据id",required = true,example = "1") @PathVariable Long id){
    IntegralGrade result = integralGradeService.getById(id);
    if (result == null){
        return Result.error().message("查询失败");
    }else {
        return Result.ok().data("integralGrade",result);
    }
}

4、访问
完成上述代码,启动Spring Boot程序,访问:http://localhost:8080/swagger-ui.html

5、进行功能测试
点击try it out 可以测试接口

标签:教程,return,Springboot,value,private,Result,Swagger,id
From: https://www.cnblogs.com/jundong2177/p/17568053.html

相关文章

  • springBoot——整合junit
    spring整合junit复习springBoot整合junitpackagecom.example.springboot_04;importcom.example.springboot_04.service.ServiceBook;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot......
  • springBoot——读取数据
    在yml文件中读取数据,用$符号就可以类似于这样的如果要读取yml里面全部的数据,就用自动装配来写而如果要用实体类来读取里面的数据packagecom.example.springboot_01.domain;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.spr......
  • 我开源了团队内部基于SpringBoot Web快速开发的API脚手架stater
    我们现在使用SpringBoot做Web开发已经比之前SprngMvc那一套强大很多了。但是用SpringBootWeb做API开发还是不够简洁有一些。每次WebAPI常用功能都需要重新写一遍。或者复制之前项目代码。于是我封装了这么一个抽出SpringBootWebAPI每个项目必备需要重复写的模块,和......
  • Swagger和日志
    Swagger官网:https://swagger.io/Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。功能主要包含以下几点:A.使得前后端分离开发更加方便,有利于团队协作B.接口文档在线自动生成,降低后端开发人员编写接口文档的负担C.接口功能测试......
  • python系列教程210——嵌套lambda
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • springboot整合mybatis
    项目结构: 1.添加依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://mave......
  • springboot日志
    日志简述 我们具体应该怎么选用  如何使用 首先应该导入抽象框架,搞出日志记录器,穿进去你想记录的类日志适配层 最上都是抽象接口,中间是适配层,来适配本来不也是slf4j框架的包装层解决历史遗留问题 如何把其他框架的日志替换成slf4j,把原来包里的替换成ov......
  • 物种丰度度r语言教程
    物种丰度度R语言教程物种丰度度是生态学中一个重要的概念,用来描述群落中不同物种的相对丰度。在生态学研究中,我们经常需要对物种丰度度进行分析和可视化,以了解群落的组成和结构。R语言是一种强大的统计分析和数据可视化工具,可以帮助我们进行物种丰度度的计算和可视化分析。准备工......
  • springboot——yaml格式
    ......
  • springboot
    起步依赖这两个包的源码:第一个:<developers><developer><name>Pivotal</name><email>[email protected]</email><organization>PivotalSoftware,Inc.</organization><organizationUrl>https://www.sprin......