Swagger--基础--2.2--集成Springboot3--swagger3

Swagger–基础–2.2–集成Springboot3–swagger3


代码位置

https://gitee.com/DanShenGuiZu/learnDemo/tree/master/swagger_learn/swagger3

1、swagger2到swagger3的注解变化

@Api →@Tag
@ApiIgnore → @Parameter(hidden = true)或者@Parameter(hidden = true)或者@Hidden
@ApiImplicitParam → @Parameter
@ApiImplicitParams → @Parameters
@ApiModel → @Schema
@ApiModelProperty(hidden = true) → @Schema(accessMode = READ_ONLY)
@ApiModelProperty → @Schema
@ApiOperation(value = "foo", notes = "bar") → @Operation(summary = "foo", description = "bar")
@ApiParam → @Parameter
@ApiResponse(code = 404, message = "foo") →@ApiResponse(responseCode = "404", description = "foo")

在这里插入图片描述

2、代码

User

package feizhou.swagger3.business.business;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;

@Data
@ToString

@Schema(title = "用户实体", description = "用户实体信息")
public class User {
    @Schema(title = "用户id", example = "1")  //推荐的另一种方式
    private String userId;

    @Schema(title = "用户名", example = "张三")
    private String userName;
}


UserController

package feizhou.swagger3.business.business;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Tag(name = "人员信息接口")
@RestController
@RequestMapping("/userController")
public class UserController {


    @Operation(summary = "新增用户", description = "新增用户描述", tags = {"人员信息接口"})
    @RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    //swagger :在方法位置定义响应参数
    @ApiResponses({
            @ApiResponse(responseCode = "401", description = "请进行身份验证"),
            @ApiResponse(responseCode = "403", description = "拒绝执行"),
            @ApiResponse(responseCode = "404", description = "资源未找到"),
            @ApiResponse(responseCode = "500", description = "系统异常")
    })
    //swagger :在参数位置定义请求参数
    public Integer add(@Parameter(name = "user", description = "用户实体参数", required = true) @RequestBody User user) {
        return 1;
    }

    @RequestMapping(value = "/update", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    @Operation(summary = "修改", description = "修改用户描述", tags = {"人员信息接口"})
    @Parameters({
            @Parameter(name = "userId", description = "用户id", example = "1", required = true),
            @Parameter(name = "userName", description = "用户名称", example = "1", required = true)
    })
    //swagger :在方法位置定义请求参数
    public Integer update(@RequestParam("userId") String userId, @RequestParam("userId") String userName) {
        return 1;
    }


    @Operation(summary = "删除", description = "删除用户描述", tags = {"人员信息接口"})
    @RequestMapping(value = "/delete", method = RequestMethod.DELETE)
    //swagger :在参数位置定义请求参数
    public Integer delete(@Parameter(name = "userId", description = "需要删除的用户id", required = true) @RequestParam("userId") String userId) {
        return 1;

    }


    @Operation(summary = "查询", description = "查询用户", tags = {"人员信息接口"})
    @Parameters({
            @Parameter(name = "userId", description = "用户标识", required = true)
    })
    @RequestMapping(value = "/query", method = RequestMethod.GET)
    public String query(@RequestParam("userId") String userId) {
        return userId;
    }

}


SwaggerConfig

package feizhou.swagger3.business.config;


import io.swagger.v3.oas.models.ExternalDocumentation;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Configuration
public class SwaggerConfig {
    @Bean
    public OpenAPI openAPI1() {//默认OpenAPI
        Contact contact = new Contact();
        contact.setEmail("9207867312");
        contact.setExtensions(null);
        contact.setName("zhoufei");
        contact.setUrl("http");
        return new OpenAPI()
                .info(new Info().title("swagger3.0")
                        .contact(contact)
                        .description("描述信息")
                        .version("版本 v0.0.1")
                        .license(new License().name("Apache 2.0").url("Apache 2.0的链接地址")))
                .externalDocs(new ExternalDocumentation()
                        .description("外部文档")
                        .url("外部文档对应的URl"));
    }

    @Bean("group1")
    public GroupedOpenApi group1() {
        String[] packagedToMatch = {
                "feizhou.xcoa.project.em"
        };
        return GroupedOpenApi.builder().group("人员组")//定义一个组名称
                .packagesToScan(packagedToMatch)//包扫描路径
                .pathsToMatch("/api/em/**", "/api/em-open/v1/**")//扫描路径
                .packagesToExclude("feizhou.xcoa.product",//排除哪些包
                        "feizhou.business",
                        "feizhou.app",
                        "feizhou.test"//OA
                ).addOpenApiCustomizer(openApi -> {
                    openApi.setInfo(new Info().title("文档1").description("文档1的描述").version("1.0.0"));
                    openApi.addSecurityItem(
                            new SecurityRequirement().addList("bearer-jwt", Arrays.asList("read", "write")));
                    openApi.getComponents().addSecuritySchemes("bearer-jwt", new SecurityScheme()
                            .type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER).name("Authorization"));
                }).build();


    }

    @Bean
    public GroupedOpenApi group2() {
        return GroupedOpenApi.builder()
                .group("机构组")//定义一个组名称
                .pathsToMatch("/admin/**")//扫描路径
                .addOpenApiMethodFilter(method -> method.isAnnotationPresent(Component.class))//方法注解过滤
                .build();
    }
}

application.yml

server:
  port: 8787
 

pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- swagger 3.0 -->
<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.5.0</version>
</dependency>

3、测试

http://localhost:8787/swagger-ui/index.html

在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot项目中集成Swagger UI非常简单。以下是一些基本的步骤: 1. 添加Swagger依赖:在项目的`pom.xml`文件中添加Swagger的相关依赖。可以使用以下依赖: ```xml <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> ``` 2. 创建Swagger配置类:创建一个Java类,用于配置Swagger。可以使用以下示例代码: ```java 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; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { @Bean public Docket apiDocket() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.example.controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("API Documentation") .description("API Documentation for My Awesome App") .version("1.0.0") .build(); } } ``` 在上述代码中,`@EnableSwagger2`注解启用Swagger,`@Bean`注解创建一个`Docket`实例,配置Swagger的基本信息和扫描的包路径。 3. 启动应用程序:运行Spring Boot应用程序,Swagger UI将在`http://localhost:8080/swagger-ui.html`上自动启动。 现在,您可以在Swagger UI中浏览和测试您的API。Swagger UI将根据您的代码和注释生成API文档,并提供一个交互式的界面,供用户查看和测试API的各个端点和参数。 请注意,上述示例代码中的包路径和其他配置可能需要根据您的项目结构进行调整。此外,还可以通过其他配置选项来自定义Swagger UI的行为和外观。更多详细信息,请参阅SwaggerSpringfox的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值