代码编织梦想

  • pom引入
    需要注意版本文体,版本不一致,具体使用的坑也不一致…
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger2</artifactId>
   <version>2.8.0</version>
</dependency>
<dependency>
   <groupId>io.springfox</groupId>
   <artifactId>springfox-swagger-ui</artifactId>
   <version>2.8.0</version>
</dependency>

整合swagger-ui

# 在application.yml 中加入swagger-ui 的开启或关闭配置
# swagger 文档配置 false关闭 true 开启
swagger:
  enable: true

配置

/**
 * SwaggerConfig 配置
 * @author zy
 */
@Configuration
// 此处增加了该注解以后,不需要再启动类上增加额外注解,会二次创建bean 导致异常
@EnableSwagger2
// 此处与application中swagger-ui配置的名称一致即可完成开启与关闭
@ConditionalOnProperty(name = "enable",prefix = "swagger", havingValue = "true")
public class SwaggerConfig {

    /**
     * 构建配置
     */
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("修改为controller的包路径即可"))
                .paths(PathSelectors.any())
                .build()
                .apiInfo(apiInfo())
                .securitySchemes(Collections.singletonList(securityScheme()))
                .securityContexts(Collections.singletonList(securityContext()));
    }

    /**
     * 文档描述
     */
    private ApiInfo apiInfo() {
        return new ApiInfo(
                "xxx api文档",
                "",
                "1.0",
                "",
                new Contact("", "", ""),
                "", "", Collections.emptyList());
    }

    /**
     * 整合Oauth 使用的对应的方式进行授权
     */
    private SecurityScheme securityScheme() {
        GrantType grantType = new ResourceOwnerPasswordCredentialsGrant(  "/oauth/token");

        return new OAuthBuilder()
                .name("spring_oauth")
                .grantTypes(Collections.singletonList(grantType))
                .scopes(Arrays.asList(scopes()))
                .build();
    }

    /**
     *安全上下文
     */
    private SecurityContext securityContext() {
        return SecurityContext.builder()
                              .securityReferences(Collections.singletonList(new SecurityReference("spring_oauth", scopes())))
                              .forPaths(PathSelectors.any())
                              .build();
    }

    /**
     * 这里是写允许认证的scope
     */
    private AuthorizationScope[] scopes() {
        return new AuthorizationScope[]{
                new AuthorizationScope("select", "select scope is trusted!")
        };
    }

}

具体使用,个人有个人的使用方法。在开发中接口参数通常使用的实体类接收参数,而简单实用swagger-ui 会导致出现很多不需要的参数,以下是针对此问题的部分调整,会导致post测试提交失败,但是好看。

// 在swagger-ui的配置项中,另一种配置不是进行包扫描,而是扫描所有的带@Api注解的接口,具体根据实际使用
@Api(tags = "TestController", description = "测试")
@RestController
@RequestMapping("/api/test")
public class TestController extends ApiController {


    @ApiOperation("测试get方法参数")
    @ApiResponses({
            @ApiResponse(code = 1000, message = "操作成功", response = AjaxResult.class),
            @ApiResponse(code = 1001, message = "操作失败,以及操作失败原因")
    })
    @ApiImplicitParams({
            @ApiImplicitParam(name = "chatId", value = "群组id", required = true, paramType = "query", dataType = "String"),
    })
    @GetMapping("/getAll")
    public AjaxResult getAll(String chatId) {
        return AjaxResult.success();
    }

    @ApiOperation("测试Post方法参数")
    @ApiResponses({
            @ApiResponse(code = 1000, message = "操作成功"),
            @ApiResponse(code = 1001, message = "操作失败,以及操作失败原因")
    })
    // 页面上仅会展示以下两个参数,试过paramType换成body 也会产生部分问题,暂未解决
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "群组名称", required = true, paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "remarks", value = "群组描述", required = false, paramType = "query", dataType = "String"),
    })
    @PostMapping("/add")
    // @ApiIgnore该注解可以忽略 ChatGroup 中的参数,仅使用ApiImplicitParams上定义的参数
    public AjaxResult add(@ApiIgnore @RequestBody TestEntity testEntity ) {
       return AjaxResult.success();
    }
}
@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "测试")
public class TestEntity extends Entity {
    @ApiModelProperty("主键")
    private String id;
    @ApiModelProperty("更新时间")
    private String updateTime;
    // hidden 为true的时候,页面上不会显示该参数,一般用于不需要传参的字段
    @ApiModelProperty(value = "更新人",hidden = true)
    private String updateBy;
}

访问页面

localhost:8080/{项目路径}/swagger-ui.html
# aouth 认证 密码方式

![认证](https://img-blog.csdnimg.cn/35e6a20506ed4923aba3f809a9c779e9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAenlwYXNzZW5nZXI=,size_20,color_FFFFFF,t_70,g_se,x_16)



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43180307/article/details/122080381

手把手带你入门之swagger ui-爱代码爱编程

关于Swagger UI,从官网找来一段介绍。 简单的来讲, Swagger UI就是API文档生成和测试利器。 Swagger UI is a dependency-freecollection of HTML, Javascript, and CSS assets that dynamically generatebeautiful document

swagger 自定义ui界面_五只鸭子的博客-爱代码爱编程_swagger ui

Swagger 自定义UI界面 Swagger简单介绍**如何使用Swagger **添加自定义UI界面使用swagger-ui-layer Swagger简单介绍 Swagger是一个Restful风格接口的文档

swagger ui安装与使用教程_jarunwang的博客-爱代码爱编程_swagger-ui

前言 查看这文章前,请先阅读Swagger Edit 安装和使用教程。 继Swagger Edit上一篇文章写如何编辑导出接口文档。这篇文章就是负责教导大家如何用Swagger UI来查看和接口测试。Swagger UI

swagger ui 详细讲解_蜡笔没了小新git的博客-爱代码爱编程_swagui

本文章描述的是Swagger3.0的内容,与Swagger2.0内容有较大差别。接口描述在3.0中通过Swagger规范(一个JSON文件)来描述,Swagger2.0是通过在接口中提供一系列注解来描述的。   1.集成Swagger        Swagger提供了一组静态页面,可以在SpringBoot应用中集成这些静态页面,直接访问

swaggerui页面没有显示controller方法的坑_钟渊的博客-爱代码爱编程

最近用springboot搭建一个配置系统,使用swagger,但是启动访问页面发现以下问题。   研究发现少了以下配置,这两行很重要: 全部代码如下: @Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRest

resource owner password credentials grant 部分理解_chenglang1933的博客-爱代码爱编程

资源拥有者密码证书授权   RFC6749描述   这个玩意适用于信任的应用程序或者操作系统   相关文章 http://leastprivilege.com/2013/11/13/embedding-a-simple-usernamepassword-authorization-server-in-web-api-v2/

swagger-ui快速入门教程-爱代码爱编程

title: swagger ui快速入门教程 catalog: true date: 2019-10-31 15:30:54 subtitle: 通过使用易水公共组件快速开启和关闭swagger ui,生成软件接口说明

Swagger-UI 之 简单使用-爱代码爱编程

Swagger-UI的简单使用 1.什么是Swagger-UI Swagger Swagger UI允许任何人(无论您是开发团队还是最终用户)都可以可视化API资源并与之交互,而无需任何实现逻辑。它是根据您的OpenAPI(以前称为Swagger)规范自动生成的,具有可视化文档,可简化后端实现和客户端使用。 下面让我们看看在项目中如何使用 这里用到的是

Swagger UI简介-爱代码爱编程

Swagger UI 简介 Swagger UI允许任何人(无论您是开发团队还是最终用户)都可以可视化API资源并与之交互,而无需任何实现逻辑。它是根据您的OpenAPI(以前称为Swagger)规范自动生成的,具有可视化文档,可简化后端实现和客户端使用。 SwaggerUI 特点 无依赖 UI可以在任何开发环境中使用,无论是本地还是在

swaggerUI页面没有显示Controller方法-爱代码爱编程

如上面两个图,ui界面未显示我配置的描述信息 解决方案如下: 第一步: 第二步: 启动类未加根包扫描 // 给启动类加注解,扫描根包 @SpringBootApplication(scanBasePackages = CommonCons.BASE_PACKAGE) public class SpringclouddemoApplication {

swagger 以及swaggerUI使用的步骤-爱代码爱编程

1.swagger,可以这么理解swagger是接口规范。Rest Api 传递参数的除了get请求外,put post,需要传递json。或者就是直接都通过传递json到后台 这里主要介绍一下springboot后台整合swagger的使用步骤。如果要查看swagger(OpenApi)的规范,可以参考git的官方文件规范。 springboot 整合

Swagger接口文档配置-爱代码爱编程

Swagger 介绍Swagger的诞生前后端分离添加swagger的坐标Swagger配置ControllerSwagger使用的注解及其说明:Swagger配置多用户 介绍 开发人员在开发过程中,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。其

Swagger-UI的修改指南-爱代码爱编程

前言 由于打比赛的项目需求,需要使用到Swagger,并且需要稍微改动一下现有的Swagger-UI以符合项目的整体风格,我度娘搜了一下,有从源代码层面讲怎么修改的不多,很多是会贴一个基于BootStrap修改的pom坐标。本文先简单介绍一下Swagger是什么,重点介绍如何对现有的Swagger-UI进行修改。 本文基于Swagger 2.9.