Swagger2 不完美解決非全局設置header

在項目開發過程中,使用Swagger2快速生成接口文檔,甚至進行Rest接口測試非常普遍。在某些項目中,請求的Header中往往設置一些全局標識用于認證,但又有部分Rest接口不需要驗證這個全局標識。而在進行Swagger2配置的時候,又只能設置全局header開關。

例如

@Configuration
@EnableSwagger2
public class Swagger2 {

    @Bean
    public Docket createRestApi() {
        
        ParameterBuilder aParameterBuilder = new ParameterBuilder();
        aParameterBuilder.name("openid").description("openid").modelRef(new ModelRef("string")).parameterType("header").required(true).build();
        
        List<Parameter> aParameters = Lists.newArrayList();
        aParameters.add(aParameterBuilder.build());
        
        return new Docket(DocumentationType.SWAGGER_2)
                .globalOperationParameters(aParameters)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.sam.demo.controller"))
                .paths(PathSelectors.any())
                .build();
    }
}

這時候所有的Rest接口均需要header中有openid這個參數,如果某幾個Rest地址不需要呢?至少我沒找到Swagger2中對特定Rest路徑進行header設置的方法,網上大多數博文均提到采用Filter方式實現,個人覺得這樣會增加維護的負擔。

如果不是完美主義者,可以在Controller方法中通過設置非必填header類型參數以覆蓋全局設置。

例如

@RestController
@RequestMapping(value="/error")
public class ErrorController extends BaseController {
    
    @RequestMapping(value="/404")
    @ApiImplicitParam(name = "openid", value = "openid", required = false, dataType = "String",paramType="header")
    public Object notFoundError(){
        JsonResult result = new JsonResult("404","無效請求地址");
        setReturnValMaskLogString(result);
        return result;
    }
    
    @RequestMapping(value="/500")
    @ApiImplicitParam(name = "openid", value = "openid", required = false, dataType = "String",paramType="header")
    public Object serverError(){
        JsonResult result = new JsonResult("500", "內部異常");
        setReturnValMaskLogString(result);
        return result;
    }
}

這時候Swagger頁面還是會顯示openid參數的輸入框,

EBVJ2{6SV3)@ZVQ18@PGE)1.png

openid已不是必填項,雖影響美觀,但也將就應付,畢竟不是核心功能。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,993評論 19 139
  • 一說到REST,我想大家的第一反應就是“啊,就是那種前后臺通信方式?!钡窃谝笤敿氈v述它所提出的各個約束,以及如...
    時待吾閱讀 3,477評論 0 19
  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,186評論 6 13
  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,973評論 6 342
  • XM, 最近網絡上流傳一幅漫畫,說的是友誼的小船說翻就翻,不知道你看到沒有,真可惜,很多很好笑,有趣,難過的事情忘...
    吳飛飛的非凡人生閱讀 466評論 0 0