天天看點

Swagger2 添加HTTP head參數

大家使用swagger往往會和JWT一起使用,而一般使用jwt會将token放在head裡,這樣我們在使用swagger測試的時候并不友善,因為跨域問題它預設不能自定義head參數。然後自己去網上找,發現國内大多數的都是寫一個Filter接口,然後添加到配置。這樣極大的破壞了程式的完整性。想想這相當于維護兩套代碼。我們隻是需要一個簡單的小功能,國外大多是修改Swagger的index頁面,而我用的是swagger2,不需要配置靜态的那些東西。

是以我在SwaggerConfig.api()方法中添加了前4行代碼,然後調用.globalOperationParameters(pars)方法将head參數添加進去:

@EnableSwagger2

@EnableWebMvc

@ComponentScan("com.g.web")

public class SwaggerConfig {

@Bean

public Docket api(){

//添加head參數start

ParameterBuilder tokenPar = new ParameterBuilder();

List<Parameter> pars = new ArrayList<Parameter>();

tokenPar.name("x-access-token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build();

pars.add(tokenPar.build());

//添加head參數end

return new Docket(DocumentationType.SWAGGER_2)

.select()

.apis(RequestHandlerSelectors.any())

.paths(PathSelectors.regex("/api/.*"))

.build()

.globalOperationParameters(pars)

.apiInfo(apiInfo());

}

private ApiInfo apiInfo() {

return new ApiInfoBuilder()

.title("背景接口文檔與測試")

.description("這是一個給app端人員調用server端接口的測試文檔與平台")

.version("1.0.0")

.termsOfServiceUrl("http://terms-of-services.url")

//.license("LICENSE")

//.licenseUrl("http://url-to-license.com")

.build();

然後前台效果是這樣的:

Swagger2 添加HTTP head參數

繼續閱讀