2025年swagger2配置security(swagger enable)

swagger2配置security(swagger enable)一 Swagger 简介 Swagger2 是一个规范和完整的框架 用于生成 描述 调用和可视化 Restful 风格的 web 服务 接口文档对于前后端开发人员都非常重要 Swagger 可以使得接口文档动态生成 OpenApi 是 REST API 的 api 描述格式 每个访问地址类型 POST 写 或者 GET 读 每个操作的参数 包括输入输出参数 认证方法 连接信息 声明

大家好,我是讯享网,很高兴认识大家。



一、Swagger简介

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

接口文档对于前后端开发人员都非常重要。Swagger可以使得接口文档动态生成

OpenApi:是REST API的api描述格式

- 每个访问地址类型。POST(写)或者GET(读)

- 每个操作的参数,包括输入输出参数

- 认证方法

- 连接信息,声明,使用团队和其他信息。

Open API规范可以使用YAML或JSON格式进行编写。

Open API规范为REST API定义了一个与语言无关的标准接口。

Swagger2的组件:

- Swagger Editor:基于浏览器编辑器,可以在里面编写Open API规范。

- Swagger UI:将Open API规范呈现为交互式API文档,用可视化UI展示描述文件。

- Swagger Codgen:将Open API规范生成为服务器存根和客户端库。

- Swagger Inspector:跟ui有点类似,但是可以返回更多信息,也可以保存请求的实际参数数据。

- Swagger Hub:集成上面所有项目的各个功能。

spring fox:是根据代码生成接口文档,所以生成进行更新项目版本,修改代码即可,而不需要跟随修改描述文件。


讯享网

二、Swagger-UI用法

xml</p><p>        &lt;dependency&gt;</p><p>            &lt;groupId&gt;io.springfox&lt;/groupId&gt;</p><p>            &lt;artifactId&gt;springfox-Swagger2&lt;/artifactId&gt;</p><p>            &lt;version&gt;2.9.2&lt;/version&gt;</p><p>        &lt;/dependency&gt;</p><p>        &lt;dependency&gt;</p><p>            &lt;groupId&gt;io.springfox&lt;/groupId&gt;</p><p>            &lt;artifactId&gt;springfox-Swagger-ui&lt;/artifactId&gt;</p><p>            &lt;version&gt;2.9.2&lt;/version&gt;</p><p>        &lt;/dependency&gt;</p><p>

在启动类上添加一个注解

java</p><p>@EnableSwagger2 //springfox的注解,开启Swagger2相关技术的开启</p><p>//会扫描当前类所在的包以及子包中所有类型当中的注解。做Swagger文档的定值</p><p>

可以通过 localhost:8080/Swagger-ui.html来访问Swagger文档

Swagger-ui可以帮我们做请求的模拟处理(类似于postman)

三、Swagger2配置

java</p><p>@Configuration</p><p>public class SwaggerConfig {</p><p>    /</p><p>     * 创建Docket类型的对象,并使用spring容器管理</p><p>     * Docket是Swagger的全局配置对象</p><p>     *</p><p>     * @return</p><p>     */</p><p>    @Bean</p><p>    public Docket docket() {</p><p>        Docket docket = new Docket(DocumentationType.SwagGER_2);</p><p><br></p><p>        ApiInfo apiInfo =  //api帮助文档的描述信息</p><p>                new ApiInfoBuilder()</p><p>                        .contact(new Contact(&#34;王国富Swagger开发文档&#34;,  //文档的发布者名称</p><p>                                &#34;http://localhost.com&#34;, //企业网站</p><p>                                &#34;@.com&#34;)) //发布者的电子邮箱</p><p>                        .title(&#34;Swagger框架学习帮助文档&#34;)</p><p>                        .description(&#34;Swagger框架学习帮助文档详细描述&#34;)</p><p>                        .version(&#34;1.2&#34;)</p><p>                        .build(); //构建器模式创建对象</p><p>        docket.apiInfo(apiInfo);//给docket上下文配置api描述信息</p><p>        docket</p><p>                .select() //获取Docket中的选择器 返回ApiSelectorBuilder.构建选择器 如:扫描什么包的注解</p><p>                .apis(RequestHandlerSelectors.basePackage(&#34;com.wang.controller&#34;))//设定扫描那个包(包含子包)中的注解</p><p>                .apis(Predicates.not(//取反</p><p>                        RequestHandlerSelectors.withMethodAnnotation( //当方法上有什么注解的时候返回true</p><p>                                MyAnnotationSwagger.class)) //自定义的注解</p><p>                )//整体表示方法上有这个注解的时候就不会生成文档在Swagger上面了</p><p>                .paths(Predicates.or(</p><p>                        PathSelectors.regex(&#34;/Swagger/.*&#34;),</p><p>                        PathSelectors.regex(&#34;/.*&#34;),</p><p>                        PathSelectors.regex(&#34;/Swagger2/.*&#34;))</p><p>                )//通过正则表达式约束生成api文档的路径地址  表示上面三个路径的任意一个都会返回true,也就是会在Swagger文档中表现出来</p><p>                .build();//必须要build,要不然上面不会生效</p><p>        return docket;</p><p>    }</p><p>}</p><p>

自定义的注解类:

java</p><p>@Target(value = {ElementType.METHOD,ElementType.TYPE}) //描述当前的注解可以定义在什么资源上面</p><p>//METHOD:方法  TYPE:类型 FILED:属性 PARAMETER:定义在方法参数上</p><p>@Retention(RetentionPolicy.RUNTIME) //当前注解什么时候有效</p><p>//RUNTIME:运行时有效 SOURCE:源码有效 CLASS:字节码有效</p><p>public @interface MyAnnotationSwagger {</p><p>    String value() default &#34;&#34;;//自定义注解的属性</p><p>}</p><p>

四、Swagger2常用注解

- @Api:描述当前类型生成帮助文档的信息

  tags属性其实就是给控制类起别名,在Swagger上显示是别名(可以用中文),定义几个在ui中就显示几个。 

  java</p><p>  @RestController</p><p>  @Api(tags = &#34;Swagger学习控制器&#34;) //起别名</p><p>  public class MyController {}</p><p> 

- @ApiOperation:给方法描述   value没有默认

  java</p><p>      @ApiOperation(value = &#34;post方法,执行数据新增操作&#34;,notes = &#34;Swagger学习使用-处理POST请求方法&#34;)</p><p>      @PostMapping(&#34;/post&#34;)</p><p>      public String post(){</p><p>          return &#34;post&#34;;</p><p>      }</p><p> 

- @ApiParam

  java</p><p>  @ApiOperation(value = &#34;post方法,执行数据新增操作&#34;,notes = &#34;Swagger学习使用-处理POST请求方法&#34;)</p><p>      @PostMapping(&#34;/post&#34;)</p><p>      public String post(@ApiParam(name = &#34;用户名&#34;,value = &#34;新增用户时提供的用户名&#34;,required = true) String username,</p><p>                         @ApiParam(name = &#34;密码&#34;,value = &#34;新增用户时提供的密码&#34;,required = true) String password){</p><p>          return &#34;post&#34;;</p><p>      }</p><p> 

- @ApiIgnore :忽略,当前注解描述的方法或者类型,不生成api帮助文档。

  java</p><p>      @ApiIgnore</p><p>      @GetMapping(&#34;/get&#34;)</p><p>      public  String get(){</p><p>          return &#34;get&#34;;</p><p>      }</p><p> 

- @ApiImplicitParam:对方法的参数进行描述

  java</p><p>      @GetMapping(&#34;/test&#34;)</p><p>      @ApiImplicitParam(name = &#34;a&#34;,value = &#34;test方法的参数a的描述&#34;,required = false,paramType = &#34;字符串&#34;,dataType = &#34;名值对&#34;)</p><p>      public String test(String a,String b){</p><p>          return &#34;test&#34;;</p><p>      }</p><p> 

- @ApiModel:描述一个实体类型,当该实体类型会成为api帮助问你当方法的返回值类型的时候,则次注解会被解析。

  @ApiModelProperty:对实体类的属性进行描述

  java</p><p>  @ApiModel(value = &#34;用户类实体&#34;,description = &#34;存储用户数据&#34;)</p><p>  @Data</p><p>  @AllArgsConstructor</p><p>  @NoArgsConstructor</p><p>  public class User {</p><p>      @ApiModelProperty(value = &#34;主键&#34;,name = &#34;主键(id)&#34;,required =false,example = &#34;1&#34;,hidden = false)</p><p>      private Integer id;</p><p>      private String username;</p><p>      private String password;</p><p>  }</p><p> 

小讯
上一篇 2025-05-01 18:17
下一篇 2025-05-31 17:12

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/173146.html