Spring Boot集成Swagger快速入门Demo

1.什么是Swagger?

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。

主要作用:

  1. 使得前后端分离开发更加方便,有利于团队协作。(实际开发中,接口文档的内容会不停的发生变化,如果没有及时更新接口文档,那么前后端就不能及时同步信息。我们通过在线的接口文档swagger,这样前后端工程师都遵守swagger就行了,只要接口文档发生了变化,就会实时更新。)

  2. 接口的文档在线自动生成,降低后端开发人员编写接口文档的负担

  3. 功能测试

Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger

2.代码工程

实验目的:接口的文档在线自动生成

pom.xml

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springboot-demo</artifactId>
        <groupId>com.et</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>


    <artifactId>swagger</artifactId>


    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    <dependencies>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>


    </dependencies>
</project>

config

swift 复制代码
package com.et.swagger.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;


import java.util.Collections;


@Configuration
public class SwaggerConfiguration {
    private ApiInfo apiInfo() {
        return new ApiInfo("Blog REST APIs",
                "REST APIs for Blog Application",
                "1.0",
                "http://www.liuhaihua.cn",
                new Contact("HBLOG", "http://www.liuhaihua.cn", "xxx"),
                "License of API",
                "API license URL",
                Collections.emptyList());
    }
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

controller

kotlin 复制代码
package com.et.swagger.controller;


import com.et.swagger.model.LoginDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;


import java.util.HashMap;
import java.util.Map;


@RestController
@Api(value = "HelloWorldController", tags = "HelloWorldController", description = "this is a test")
public class HelloWorldController {
    @GetMapping("/hello")
    @ApiOperation("showHelloWorld")
    public Map<String, Object> showHelloWorld(){
        Map<String, Object> map = new HashMap<>();
        map.put("msg", "HelloWorld");
        LoginDto loginDto =  new LoginDto();
        loginDto.setPassword("123456");
        loginDto.setPhone("11111123123");
        map.put("loginuser", loginDto);
        return map;
    }
    @PostMapping("/login_auth")
    @ApiOperation("login")
    public LoginDto login(@RequestBody LoginDto loginDto){
        return loginDto;
    }
}

model

css 复制代码
package com.et.swagger.model;


import io.swagger.annotations.ApiModelProperty;
import lombok.Data;


@Data
public class LoginDto {
    @ApiModelProperty(value = "phone",required = true)
    private String phone;
    @ApiModelProperty(value = "password",required = true)
    private String password;
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

3.测试

启动Spring Boot应用

Swagger 文档的 JSON API

访问 Swagger UI

在线测试接口

4.参考引用

相关推荐
JH3073几秒前
Redisson vs Jedis vs Lettuce
java·redis
骇客野人几秒前
java对象和JSON对象之间的转换关系
java·开发语言·json
红石榴花生油几秒前
Linux服务器权限与安全核心笔记
java·linux·前端
只与明月听4 分钟前
一个有趣的面试题
前端·后端·python
sumAll6 分钟前
拒绝黑盒!Spring @Scheduled 定时任务源码深度解析
java·后端·spring
Seven976 分钟前
剑指offer-47、求1+2+3...+n
java
ZePingPingZe7 分钟前
Spring boot2.x-第05讲番外篇:常用端点说明
java·spring boot·后端
张人大 Renda Zhang7 分钟前
Spring Cloud / Dubbo 是 2 楼,Kubernetes 是 1 楼,Service Mesh 是地下室:Java 微服务的“三层楼模型”
spring boot·spring cloud·云原生·架构·kubernetes·dubbo·service_mesh