swagger是一个很牛B的东东,但正常使用时,我们的trade股票程序化交易接口,接口需要登陆才能访问的。即登陆时,要传一个登陆后的token才能访问的。那这个怎么设置,才可以让所有trade股票程序化交易接口,接口都允许登陆后访问呢。解决办法如下:
@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket platformApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).forCodeGeneration(true)
.select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.apis(RequestHandlerSelectors.any())
.paths(regex('^.*(? securitySchemes() {
List apiKeyList= new ArrayList();
apiKeyList.add(new ApiKey('x-auth-token', 'x-auth-token', 'header'));
return apiKeyList;
}
private List securityContexts() {
List securityContexts=new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex('^(?!auth).*$'))
.build());
return securityContexts;
}
List defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope('global', 'accessEverything');
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List securityReferences=new ArrayList<>();
securityReferences.add(new SecurityReference('Authorization', authorizationScopes));
return securityReferences;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title('starmark-API').description('©2018 Copyright. Powered By starmark.')
// .termsOfServiceUrl('')
.contact(new Contact('Starmark', '', '947618@163.com')).license('Apache License Version 2.0')
.licenseUrl('https://github.com/springfox/springfox/blob/master/LICENSE').version('2.0').build();
}
}
关键是在securitySchemes()方法配置里增加需要token的配置。配置完成后,swagger-uhtml里右上角会有一个Authorize的按钮,录入该token即能成功调用相关trade股票程序化交易接口,接口
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点