本篇内容主要讲解“Spring Boot+Swagger_UI怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot+Swagger_UI怎么配置”吧!
一:pom.xml 依赖
<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>
二:application.yaml 开关配置
# swagger swagger: switch: true
三:SwaggerConfig.java 配置
@Configuration @EnableSwagger2 public class SwaggerConfig { @Value("${swagger.switch}") private boolean swaggerSwitch; @Bean public Docket createRestApi() { Docket docket = new Docket(DocumentationType.SWAGGER_2); if (swaggerSwitch) { docket.enable(true); } else { docket.enable(false); } docket.apiInfo(apiInfo()).select() // 加了ApiOperation注解的类,才生成接口文档 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) // 包下的类,才生成接口文档 .paths(PathSelectors.any()).build().securitySchemes(security()); return docket; } private ApiInfo apiInfo() { return new ApiInfoBuilder().title("Demo").description("接口文档").termsOfServiceUrl("").version("0.1").build(); } private List<ApiKey> security() { return newArrayList(new ApiKey("token", "token", "header")); } }
四: 接口配置代码示例
/** * @Title: list * @Description: 测试 * @return void 返回类型 * @throws */ @ApiOperation(value="消息列表查询",notes="消息列表查询") @ApiImplicitParams({@ApiImplicitParam(name="userId",value="用户ID",required=true,dataType="int")}) @ApiResponses(value= {@ApiResponse(code = 200,message="Sucess",response=MsgPushInfoEntity.class,responseContainer="List")}) @RequestMapping(value="/list",method=RequestMethod.POST) public List<MsgPushInfoEntity> list(@RequestBody MsgPushInfoEntity msg) { logger.info("===========" + msgPushInfoService.list().size() + "==========="); logger.error("===========" + msgPushInfoService.list().size() + "==========="); return new ArrayList<MsgPushInfoEntity>(); }
五:swagger-ui展示
六:Swagger注解说明
1.@Api
该注解将一个Controller(Class)标注为一个swagger资源(API)。在默认情况下,Swagger-Core只会扫描解析具有
@Api注解的类,而会自动忽略其他类别资源(JAX-RS endpoints,Servlets等等)的注解。该注解包含以下几个重要属性:
tags
API分组标签。具有相同标签的API将会被归并在一组内展示。
value
如果tags没有定义,value将作为Api的tags使用
description
API的详细描述,在1.5.X版本之后不再使用,但实际发现在2.0.0版本中仍然可以使用
2.@ApiOperation
在指定的(路由)路径上,对一个操作或HTTP方法进行描述。具有相同路径的不同操作会被归组为同一个操作对象。
不同的HTTP请求方法及路径组合构成一个唯一操作。此注解的属性有:
value
对操作的简单说明,长度为120个字母,60个汉字。
notes
对操作的详细说明。
httpMethod
HTTP请求的动作名,可选值有:"GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"。
code
默认为200,有效值必须符合标准的HTTP Status Code Definitions。
3.@ApiImplicitParams
注解ApiImplicitParam的容器类,以数组方式存储。
@ApiImplicitParam
对API的单一参数进行注解。虽然注解@ApiParam同JAX-RS参数相绑定,但这个@ApiImplicitParam注解可以以统一的方式
定义参数列表,也是在Servelet及非JAX-RS环境下,唯一的方式参数定义方式。注意这个注解@ApiImplicitParam必须被
包含在注解@ApiImplicitParams之内。可以设置以下重要参数属性:
name
参数名称
value
参数的简短描述
required
是否为必传参数
dataType
参数类型,可以为类名,也可以为基本类型(String,int、boolean等)
paramType
参数的传入(请求)类型,可选的值有path, query, body, header or form。
3.@ApiParam
增加对参数的元信息说明。这个注解只能被使用在JAX-RS 1.x/2.x的综合环境下。其主要的属性有:
required
是否为必传参数
value
参数简短说明
4.@ApiResponses
注解@ApiResponse的包装类,数组结构。即使需要使用一个@ApiResponse注解,也需要将@ApiResponse注解包含在
注解@ApiResponses内。
5.@ApiResponse
描述一个操作可能的返回结果。当REST API请求发生时,这个注解可用于描述所有可能的成功与错误码。可以用,也可以不
用这个注解去描述操作的返回类型,但成功操作的返回类型必须在@ApiOperation中定义。如果API具有不同的返回类型,那么需要分别定义返回值,并将返回类型进行关联。但Swagger不支持同一返回码,多种返回类型的注解。注意:这个注解必须被包含在@ApiResponses注解中。
code
HTTP请求返回码。有效值必须符合标准的HTTP Status Code Definitions。
message
更加易于理解的文本消息
response
返回类型信息,必须使用完全限定类名,比如“com.xyz.cc.Person.class”。
responseContainer
如果返回类型为容器类型,可以设置相应的值。有效值为 "List", "Set" or "Map",其他任何无效的值都会被忽略。
Model的注解
对于Model的注解,Swagger提供了两个:@ApiModel及@ApiModelProperty,分别用以描述Model及Model内的属性。
6.@ApiModel
提供对Swagger model额外信息的描述。在标注@ApiOperation注解的操作内,所有的类将自动被内省(introspected),
但利用这个注解可以做一些更加详细的model结构说明。主要属性有:
value
model的别名,默认为类名
description
model的详细描述
7.@ApiModelProperty
对model属性的注解,主要的属性值有:
value
属性简短描述
example
属性的示例值
required
是否为必须值
七:关于TOKER问题
考虑到安全的问题,每次请求API需要对用户进行验证与授权。目前主流的验证方式采用请求头部(request header)传递token,即用户登录之后获取一个token,然后每次都使用这个token去请求API。如果想利用swagger-UI进行API测试,必须显式为每个需要验证的API指定token参数。
到此,相信大家对“Spring Boot+Swagger_UI怎么配置”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。