Jav*_*a P 21 rest jersey swagger swagger-ui
我是Swagger的新手.
我正在使用Swagger UI生成swagger文档.我有两个API调用.第一个调用是根据用户名和密码生成令牌.第二次呼叫需要第一次呼叫生成的令牌.
我如何使用Swagger UI为第二次调用设置该令牌?
cas*_*lin 27
@ApiImplicitParams并@ApiImplicitParam应该做的伎俩:
@GET
@Produces("application/json")
@ApiImplicitParams({
@ApiImplicitParam(name = "Authorization", value = "Authorization token",
required = true, dataType = "string", paramType = "header") })
public String getUser(@PathParam("username") String userName) {
...
}
Run Code Online (Sandbox Code Playgroud)
从文档:
您可能希望手动描述操作参数.这可能有多种原因,例如:
- 使用不使用JAX-RS注释的Servlet.
- 想要隐藏定义的参数,并使用完全不同的定义覆盖它.
- 描述在到达JAX-RS实现之前过滤器或其他资源使用的参数.
Swagger UI将会更新,您可以从那里发送令牌.不需要对HTML进行任何更改.
注意:不久前,在使用Swagger记录REST API时,我意识到仅仅添加@ApiImplicitParam是不够的(即使您只有一个参数).无论如何,你必须添加@ApiImplicitParams.
我的2.9.2 Swagger版本配置在 Swagger UI 上添加授权并发送 Bearer 令牌
@Configuration
public class SwaggerConfiguration{
//...
@Bean
public Docket api(ServletContext servletContext) {
return new Docket(DocumentationType.SWAGGER_2)...
.securitySchemes(Arrays.asList(apiKey()))
.securityContexts(Collections.singletonList(securityContext()));
}
private SecurityContext securityContext() {
return SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("/.*")).build();
}
private List<SecurityReference> defaultAuth() {
final AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
final AuthorizationScope[] authorizationScopes = new AuthorizationScope[]{authorizationScope};
return Collections.singletonList(new SecurityReference("Bearer", authorizationScopes));
}
private ApiKey apiKey() {
return new ApiKey("Bearer", "Authorization", "header");
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是添加globalOperationParameters. 它将在每个端点添加一个授权字段。
定义授权头参数:
Parameter authHeader = new ParameterBuilder()
.parameterType("header")
.name("Authorization")
.modelRef(new ModelRef("string"))
.build();
Run Code Online (Sandbox Code Playgroud)
将其添加到Docket配置中:
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(...)
.paths(...)
.build()
.apiInfo(...)
.globalOperationParameters(Collections.singletonList(authHeader));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30750 次 |
| 最近记录: |