1.首先导入依赖
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
2.编写SwaggerConfig代码
package com.lb.adnetworkbackend.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.Arrays;
import java.util.List;
/**
* @author lb
* @Date 2020/5/5
* @REMARK: 自动生成接口文档工具类
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket customDocket() {
return new Docket(DocumentationType.SWAGGER_2)
.securityContexts(Arrays.asList(securityContexts()))
.securitySchemes(Arrays.asList(securitySchemes()))
.apiInfo(apiInfo());
}
/**
* name:开发者姓名
* url:开发者网址
* email:开发者邮箱
* @return
*/
private ApiInfo apiInfo() {
Contact contact = new Contact("Test", "http://localhost/doc.html", "18888888888@163.com");
return new ApiInfoBuilder()
.title("test-backend的Swagger2 APIs")//标题
.description("API接口的描述")//文档接口的描述
.contact(contact)
.version("1.1.0")//版本号
.build();
}
/**
* 配置全局参数
* @return
*/
private SecurityScheme securitySchemes() {
return new ApiKey("Authorization", "Authorization", "header");
}
private SecurityContext securityContexts() {
return SecurityContext.builder()
.securityReferences(defaultAuth())
//.forPaths(PathSelectors.any())
.build();
}
private List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("xxx", "描述信息");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
return Arrays.asList(new SecurityReference("Authorization", authorizationScopes));
}
}
3.在要生成接口文档的接口加上相关注解,如
/**
* <p>
* 平台账户信息 前端控制器
* </p>
*
* @author lb
* @since 2021-02-13
* @update 2021-08-20 lb
*/
@RestController
@RequestMapping("/channelAccount")
@Api(value = "channelAccount API", tags = "平台账户信息APi")
@CrossOrigin
public class ChannelAccountController {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Value("${data_source_switch}")
private Boolean dataSourceSwitch;
@Autowired
private ChannelAccountService channelAccountService;
@PostMapping()
@ApiOperation(value = "新增平台账户", notes = "新增平台账户")
public RestfulResult saveChannelAccount(@RequestBody @ApiParam("code、accountId、companyName必传," +
"其他视渠道而定") ChannelAccountReq channelAccountSaveReq) {
RestfulResult restfulResult = new RestfulResult();
try {
channelAccountService.saveChannelAccount(channelAccountSaveReq);
restfulResult.setInstall(ResCode.SUCCESS);
} catch (RequestException requestException) {
restfulResult.setStatus_code(ResCode.ACCOUNT_FAIL.getCode());
restfulResult.setMessage(requestException.getMessage());
} catch (Exception e) {
restfulResult.setInstall(ResCode.ERROR);
}
return restfulResult;
}