springboot集成swagger、knife4j及常用注解

1. 集成swagger2

1.1 引入依赖

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

1.2 添加Swagger配置

关键 RequestHandlerSelectors.basePackage(“com.gz”)

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket buildDocket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(buildApiInfo())
                .select()
                // 要扫描的API(Controller)基础包
                .apis(RequestHandlerSelectors.basePackage("com.gz"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo buildApiInfo() {
        Contact contact = new Contact("gz","","");
        return new ApiInfoBuilder()
                .title("测试swagger-springbootdemo API文档")
                .description("springbootdemo后台api")
                .contact(contact)
                .version("1.0.0").build();
    }
}

通常情况下,swagger配置放在common模块中,别的模块需要集成swagger时,只需要引入common模块就行,因此需要将SwaggerConfiguration类在META-INF/spring.facories文件里进行配置,这样才能将SwaggerConfiguration类注册进IOC容器。

在这里插入图片描述

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.gzdemo.springbootdemo.config.SwaggerConfiguration

但是如果SwaggerConfiguration类在启动类的同级目录或子目录下,就不需要此项配置了。

1.3 controllers和models

TestController

@RequestMapping("/test")
@RestController
public class TestController {
    
    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }
    
    @PostMapping("/addUser")
    public Map addUser(@RequestBody UserDto userDto){
        Map<String, Object> result = new HashMap<>();
        UserDto userDto1 = new UserDto();
        userDto1.setName("ceshi");
        userDto1.setAge(23);
        userDto1.setPhone("15700000001");
        userDto1.setEmail("111@qq.com");
        result.put("data",userDto1);
        result.put("msg","添加成功");
        return result;
    }
}

UserDto

@Data
public class UserDto {
    private String name;
    private String phone;
    private Integer age;
    private String email;
}

在这里插入图片描述

1.4 浏览器访问

浏览器访问 http://localhost:8080/swagger-ui.html
在这里插入图片描述

2. Swagger常用注解

2.1 Swagger常用注解

在Java类中添加Swagger的注解即可生成Swagger接口文档,常用Swagger注解如下:

@Api:修饰整个类,描述Controller的作用

@ApiOperation:描述一个类的一个方法,或者说一个接口

@ApiParam:单个参数的描述信息

@ApiModel:用对象来接收参数

@ApiModelProperty:用对象接收参数时,描述对象的一个字段

@ApiResponse:HTTP响应其中1个描述

@ApiResponses:HTTP响应整体描述

@ApiIgnore:使用该注解忽略这个API

@ApiError :发生错误返回的信息

@ApiImplicitParam:一个请求参数

@ApiImplicitParams:多个请求参数的描述信息

@ApiImplicitParam属性:

属性取值作用
paramType查询参数类型
path以地址的形式提交数据
query直接跟参数完成自动映射赋值
body以流的形式提交 仅支持POST
header参数在request headers 里边提交
form以form表单的形式提交 仅支持POST
dataType参数的数据类型 只作为标志说明,并没有实际验证
Long
String
name接收参数名
value接收参数的意义描述
required参数是否必填
true必填
false非必填
defaultValue默认值

2.2 测试

我们在TestController和UserDto中添加Swagger注解,代码如下所示:

@RequestMapping("/test")
@RestController
@Api(value = "测试控制器",tags = "test")
public class TestController {

    @ApiOperation("用户测试hello")
    @GetMapping("/hello")
    public String hello(){
        return "hello";
    }

    @ApiOperation("添加用户")
    @PostMapping("/addUser")
    public Map addUser(@RequestBody UserDto userDto){
        Map<String, Object> result = new HashMap<>();
        UserDto userDto1 = new UserDto();
        userDto1.setName("ceshi");
        userDto1.setAge(23);
        userDto1.setPhone("15700000001");
        userDto1.setEmail("111@qq.com");
        result.put("data",userDto1);
        result.put("msg","添加成功");
        return result;
    }
}

@Data
public class UserDto {

    @ApiModelProperty(value="姓名",required = true)
    private String name;

    @ApiModelProperty(value="手机号",required = true)
    private String phone;

    @ApiModelProperty(value="年龄",required = true)
    private Integer age;

    @ApiModelProperty(value="邮箱",required = true)
    private String email;
}

启动应用,访问 http://localhost:8080/swagger-ui.html

在这里插入图片描述

3. 集成knife4j

  1. 添加依赖
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>2.0.9</version>
        </dependency>
  1. 添加注解
  • 在SwaggerConfiguration类上添加 @EnableKnife4j
  • 在SwaggerConfiguration类上添加@Import(BeanValidatorPluginsConfiguration.class),可能会报错,可以不用加这个,也不知道加了有什么用
  1. 浏览器访问

http://localhost:8080/doc.html
在这里插入图片描述

4. Swagger常用注解案例

  • @Api
@RestController
@Api(tags = "课表的相关接口")
@RequestMapping("/lessons")
public class LearningLessonController {

}

在这里插入图片描述

  • @ApiOperation
    @GetMapping("/now")
    @ApiOperation("查询我正在学习的课程")
    public LearningLessonVO queryMyCurrentLesson() {
        return lessonService.queryMyCurrentLesson();
    }

在这里插入图片描述

  • @ApiParam
    @ApiOperation("查询指定课程的学习记录")
    @GetMapping("/course/{courseId}")
    public LearningLessonDTO queryLearningRecordByCourse(
            @ApiParam(value = "课程id", example = "2") @PathVariable("courseId") Long courseId){
        return recordService.queryLearningRecordByCourse(courseId);
    }

在这里插入图片描述

  • @ApiModel
  • @ApiModelProperty
@Data
@ApiModel(description = "学习记录")
public class LearningRecordFormDTO {

    @ApiModelProperty("小节类型:1-视频,2-考试")
    @NotNull(message = "小节类型不能为空")
    @EnumValid(enumeration = {1, 2}, message = "小节类型错误,只能是:1-视频,2-考试")
    private SectionType sectionType;

    @ApiModelProperty("课表id")
    @NotNull(message = "课表id不能为空")
    private Long lessonId;

    @ApiModelProperty("对应节的id")
    @NotNull(message = "节的id不能为空")
    private Long sectionId;

    @ApiModelProperty("视频总时长,单位秒")
    private Integer duration;

    @ApiModelProperty("视频的当前观看时长,单位秒,第一次提交填0")
    private Integer moment;

    @ApiModelProperty("提交时间")
    private LocalDateTime commitTime;
}

在这里插入图片描述
在这里插入图片描述

### 回答1: Knife4j 是一个基于 Swagger 的 API 开发工具,可以帮助开发者快速构建和管理 RESTful API。要集成 Knife4jSpringBoot 项目中,可以参考以下步骤: 1. 在 pom.xml 文件中添加 Knife4j 依赖; 2. 配置 Knife4j 的扫描路径; 3. 配置 Knife4j 的 UI 配置; 4. 配置 Knife4j 的全局配置; 5. 启动 SpringBoot 项目,访问 Knife4j UI。 ### 回答2: 要将Knife4j集成Spring Boot项目中,需要进行以下步骤: 第一步是在项目的pom.xml文件中添加Knife4j的依赖项。可以通过在dependencies标签内添加以下代码来实现: ``` <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.8</version> </dependency> ``` 第二步是在Spring Boot的配置类中添加@EnableSwagger2Doc注解来启用Knife4j: ``` @Configuration @EnableSwagger2Doc public class SwaggerConfig { // 可以在这里进行一些其他的Swagger配置 } ``` 第三步是配置Swagger的基本信息,例如标题、描述等。在application.properties文件中添加以下配置: ``` knife4j.title=API接口文档 knife4j.description=这是一个使用Knife4j生成的接口文档 knife4j.version=1.0 ``` 第四步是在项目启动后,访问http://localhost:8080/doc.html(假设项目运行在localhost的8080端口)来查看Knife4j生成的接口文档页面。 集成完成后,可以在项目中使用一些注解来对接口进行描述、分组、授权等操作。例如,可以使用@Api注解来描述一个接口的基本信息,使用@ApiOperation注解来描述接口的操作等。 以上是将Knife4j集成Spring Boot项目中的基本步骤。集成成功后,可以方便地生成和查看项目的接口文档,提高了API的可维护性和可读性。 ### 回答3: Spring Boot是一个开源的Java框架,可以用于快速构建基于Spring的应用程序。Knife4j是一个基于Swagger的API接口文档生成工具,可以方便地生成接口文档。 要集成Knife4jSpring Boot项目中,首先需要在项目的pom.xml文件中添加Knife4j的依赖项。可以通过以下代码将其添加到pom.xml文件中: ``` <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.6</version> </dependency> ``` 添加完依赖项后,需要在项目的配置文件(application.properties或application.yml)中配置Knife4j相关的属性。例如,可以添加以下配置来设置文档页面的标题和描述: ``` knife4j.title=API接口文档 knife4j.description=这是一个演示项目的API接口文档 ``` 配置好属性后,可以在项目的启动类上添加`@EnableKnife4j`注解来启用Knife4j: ```java @SpringBootApplication @EnableKnife4j public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 启动项目后,访问`http://localhost:8080/doc.html`即可看到生成的接口文档页面。在这个页面上,可以查看项目中定义的API接口,并且可以方便地进行测试。 总的来说,集成Knife4jSpring Boot项目中很简单,只需要添加依赖、配置属性,然后在启动类上添加注解即可。通过Knife4j生成的接口文档可以方便地查看和测试API接口,使得开发过程更加高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值