首頁>技術>

眾所周知swagger在API文件生成及測試方面非常方便,但是很多的API呼叫都需要用到token驗證,本文就介紹兩中自動新增token的方法。以下的配置程式碼都是在swagger config類裡邊。

對每個API都新增header欄位

這個方案的優點是每個API測試的時候都可以分別設定token,缺點是大量重複輸入token欄位,如果API數量眾多或者寫入header的欄位多就很麻煩。

@Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.platform.middle.user.base.web")) .paths(PathSelectors.any()) .build() .globalOperationParameters(defaultHeader()) ; } private static List<Parameter> defaultHeader(){ ParameterBuilder appType = new ParameterBuilder(); appType.name("app-type").description("應用型別").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); ParameterBuilder appToken = new ParameterBuilder(); appToken.name("app-token").description("令牌").modelRef(new ModelRef("string")).parameterType("header").required(false).build(); List<Parameter> pars = new ArrayList<>(); pars.add(appType.build()); pars.add(appToken.build()); return pars; }

重點是在原先swagger的Docket物件後面新增***globalOperationParameters***方法。執行的效果如圖:

認證用的token作為API的header型別輸入引數

全站統一header設定

這種方案就簡化了第一種方案,在swagger UI上出現一個Authorize按鈕,一次輸入header引數,全站使用。

@Bean    public Docket createRestApi() {        return new Docket(DocumentationType.SWAGGER_2)                .apiInfo(apiInfo())                .select()                .apis(RequestHandlerSelectors.basePackage("com.platform.middle.common.fastdfs.web"))                .paths(PathSelectors.any())                .build()                .securitySchemes(unifiedAuth())                ;    }    private static List<ApiKey> unifiedAuth() {        List<ApiKey> arrayList = new ArrayList();        arrayList.add(new ApiKey("app-type", "app-type", "header"));        arrayList.add(new ApiKey("app-token", "app-token", "header"));        return arrayList;    }

重點是在原先swagger的Docket物件後面新增***securitySchemes***方法。執行的效果如圖:

統一header欄位設定

這樣就在每次呼叫API的時候把app-token、app-type作為header內容傳送給服務端。服務端就可以用這些欄位進行必要的認證。

81
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 基於 TensorFlow.js 1.5 的遷移學習影象分類器