SpringBoot配置Swagger

来源:互联网 发布:淘宝网月销量是真的吗 编辑:程序博客网 时间:2024/06/01 22:58

目录

      • 目录
      • Swagger
      • Maven依赖
      • Swagger配置
      • Swagger注解
      • 示例
        • 代码
        • 文档效果
      • Swagger文档Token机制的优化
        • 示例

Swagger

Swagger UI允许任何人 - 无论是您的开发团队还是最终消费者 - 可视化并与API资源进行交互,而无需执行任何实施逻辑。它是从您的Swagger规范自动生成的,可视化文档使后端实现和客户端消耗变得容易。

Maven依赖

        <dependency>            <groupId>io.springfox</groupId>            <artifactId>springfox-swagger2</artifactId>            <version>2.5.0</version>        </dependency>        <dependency>            <groupId>io.springfox</groupId>            <artifactId>springfox-swagger-ui</artifactId>            <version>2.5.0</version>        </dependency>

Swagger配置

@Configuration@EnableSwagger2public class SwaggerConfig {    @Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .select()                .apis(RequestHandlerSelectors.basePackage("com.arthur.demo.controller"))                .paths(PathSelectors.any())                .build()                .apiInfo(apiInfo());    }    private ApiInfo apiInfo(){        return new ApiInfoBuilder()                .title("API Title")                .description("API Description")                .termsOfServiceUrl(" API terms of service")                .version("1.0.0")                .build();    }}

Swagger注解

说明:
这里写图片描述

具体其他的注解,查看:
https://github.com/swagger-api/swagger-core/wiki/Annotations#apimodel

示例

代码

package com.arthur.demo.controller;import io.swagger.annotations.Api;import io.swagger.annotations.ApiImplicitParam;import io.swagger.annotations.ApiImplicitParams;import io.swagger.annotations.ApiOperation;import org.springframework.http.ResponseEntity;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;/** * @Author: Arthur Han * @Description: * @CreateTime: 2017/9/18 20:29 * @Modified By: * @Version: V1.0.0 */@RestController@Api(description = "登陆")public class LoginController {    @ApiOperation("用户登陆")    @ApiImplicitParams({@ApiImplicitParam(name = "userName",value = "用户名",required = true,dataType = "String",paramType="query"),            @ApiImplicitParam(name = "password",value = "密码",required = true,dataType = "String",paramType="query")})    @PostMapping(value = "/login")    public ResponseEntity Login(@RequestParam String userName, @RequestParam  String password){        if (userName.equals("admin")&&password.equals("admin")){            return ResponseEntity.ok("OK");        }else{            return ResponseEntity.ok("Fail");        }    }}

文档效果这里写图片描述

Swagger文档Token机制的优化

对于Restful风格的接口,身份信息都是放在请求头中,通过拦截器来读取Header中的Token信息,进行身份验证,但是我们在Swagger中怎么设置请求头参数,我们需要在每一个方法的中都加一个Header参数吗?当然不是。Swagger中的ParameterBuilder可以为我们所有的接口文档加上Token参数。

示例

修改SwaggerConfig的配置,加入Token参数。

@Bean    public Docket createRestAPI(){        ParameterBuilder tokenPar = new ParameterBuilder();        List<Parameter> pars = new ArrayList<Parameter>();        tokenPar.name("token")                .defaultValue("user-eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbjAifQ.EzOtp4tB1dD7xTGWIc5Dlceoi7undj9ikhDdkuz23N_te3iLoE61nqSd-X-9hmC_ERIdKMXu62ZHbuV4vqWzhQ")                .description("令牌")                .modelRef(new ModelRef("string")).parameterType("header").required(false).build();        pars.add(tokenPar.build());        return new Docket(DocumentationType.SWAGGER_2)                .select()                .apis(RequestHandlerSelectors.basePackage("com.arthur.demo.controller"))                .paths(PathSelectors.any())                .build()                .globalOperationParameters(pars)                .apiInfo(apiInfo());    }

效果如下
这里写图片描述
文档中就多了一个Token参数,我们可以为其设置默认值,方便接口测试。

代码Demo示例
http://download.csdn.net/download/u011212427/9984660


原创粉丝点击