微服务swagger解析部署使用全流程

1、介绍

swagger是一个在线接口说明文档,在代码中通过注解的方式将说明问题集成到项目,代码发生修改,说明文档同步修改,前后台联调可以快速同步数据。

2、应用

1、引入依赖

复制代码
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

2、编写配置类

复制代码
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
​
/**
 * @author szsw
 * @date 2023/3/1 18:12:17
 */
@Configuration
public class SwaggerConfig {
​
    @Bean
    public Docket docket() {
        /*采用swagger2版本*/
        return new Docket(DocumentationType.SWAGGER_2)
                /*生成api相关信息*/
                .apiInfo(createApiInfo())
                /*返回一个apiSelectorBuilder对象,用来控制接口生成在线文档*/
                .select()
                /*扫描某个包下的接口*/
                .apis(RequestHandlerSelectors.basePackage("org.jsoft.demo.controller"))
                /*生成所有的api*/
                .paths(PathSelectors.any())
                .build();
    }
​
    /**
     * 创建api相关信息
     *
     * @return ApiInfo
     */
    private ApiInfo createApiInfo() {
        return new ApiInfoBuilder()
                /*自定义title*/
                .title("swagger demo")
                /*描述*/
                .description("swagger示例")
                /*定义服务域名*/
                .termsOfServiceUrl("")
                /*自定义版本号*/
                .version("0.0.1")
                .build();
    }
​
}
​

3、开启Swagger

复制代码
@EnableSwagger2                 启动器

4、编写示例

1、实体类

复制代码
package org.jsoft.demo.dto;
​
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
​
import java.util.Date;
​
​
@Data
@ApiModel
public class UserUpdateDto {
​
    @ApiModelProperty(value = "主键", required = true, example = "asdfa54s56d")
    private String id;
    @ApiModelProperty(value = "名字", required = true, example = "张三")
    private String name;
    @ApiModelProperty(value = "密码", required = true, example = "123456")
    private String password;
    @ApiModelProperty(value = "年龄", required = true, example = "20")
    private Integer age;
    @ApiModelProperty(value = "生日", required = true, example = "1998-07-07")
    private Date birthday;
    @ApiModelProperty(value = "分数", example = "100.5")
    private Double score;
​
}
/*
value 描述
required 必填项
example 举例
*/
​
复制代码
package org.jsoft.demo.dto;
​
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
​
import java.util.Date;
​
​
@Data
@ApiModel
public class UserAddDto {
​
    @ApiModelProperty(value = "名字", required = true, example = "张三")
    private String name;
    @ApiModelProperty(value = "密码", required = true, example = "123456")
    private String password;
    @ApiModelProperty(value = "年龄", required = true, example = "20")
    private Integer age;
    @ApiModelProperty(value = "生日", required = true, example = "1998-07-07")
    private Date birthday;
    @ApiModelProperty(value = "分数", example = "100.5")
    private Double score;
​
}
​

2、Controller

复制代码
package org.jsoft.demo.controller;
​
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsoft.demo.dto.UserAddDto;
import org.jsoft.demo.dto.UserUpdateDto;
import org.jsoft.demo.utils.Result;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
​
import java.util.Map;
​
​
@Api(tags = "用户")
@RestController
@RequestMapping("/user")
public class UserController {
​
    @PostMapping
    @ApiOperation("用户新增")
    public Result add(@RequestBody UserAddDto dto) {
        return Result.ok();
    }
​
    @DeleteMapping("/{id}")
    @ApiOperation("用户删除")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "删除的用户主键", name = "id", paramType = "path")
    })
    public Result delete(@PathVariable String id) {
        return Result.ok();
    }
​
    @PutMapping
    @ApiOperation("用户修改")
    public Result update(@RequestBody UserUpdateDto dto) {
        return Result.ok();
    }
​
    @GetMapping("/{id}")
    @ApiOperation("用户详情")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "用户主键", paramType = "path")  //path是指地址传参。
    })
    public Result info(@PathVariable String id) {
        return Result.ok();
    }
​
    @GetMapping
    @ApiOperation("用户查询")
    @ApiImplicitParams({
            @ApiImplicitParam(value = "姓名", name = "name", paramType = "query"),
            @ApiImplicitParam(value = "年龄", name = "age", paramType = "query"),
            @ApiImplicitParam(value = "分数", name = "score", paramType = "query")  // get地址栏传参
    })
    public Result query(@ApiIgnore @RequestParam Map<String, String> params) {
        return Result.ok();
    }
​
}
​

3、访问地址

http:localhost:100/swagger-ui.html 100端口号

相关推荐
星辰离彬1 分钟前
Java 与 MySQL 性能优化:Java应用中MySQL慢SQL诊断与优化实战
java·后端·sql·mysql·性能优化
群联云防护小杜43 分钟前
构建分布式高防架构实现业务零中断
前端·网络·分布式·tcp/ip·安全·游戏·架构
森焱森1 小时前
垂起固定翼无人机介绍
c语言·单片机·算法·架构·无人机
程序猿小D2 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的个人财务管理系统,推荐!
java·数据库·mysql·spring·毕业论文·ssm框架·个人财务管理系统
转转技术团队2 小时前
二奢仓店的静默打印代理实现
java·后端
wenzhangli72 小时前
从源码到思想:OneCode框架模块化设计如何解决前端大型应用痛点
架构·前端框架
钢铁男儿3 小时前
C# 接口(什么是接口)
java·数据库·c#
丶小鱼丶3 小时前
排序算法之【归并排序】
java·排序算法
上上迁3 小时前
分布式生成 ID 策略的演进和最佳实践,含springBoot 实现(Java版本)
java·spring boot·分布式
永日456703 小时前
学习日记-spring-day42-7.7
java·学习·spring