如何让l5-swagger合并Header中的两个apiKey认证字段?
问题
我的API要求请求Header中携带两个认证字段,当前在config/l5-swagger.php中的配置如下:
'securityDefinitions' => [ 'securitySchemes' => [ 'app_id' => [ 'type' => 'apiKey', 'description' => 'API integration application identifier', 'name' => 'X-App-Id', 'in' => 'header', ], 'access_token' => [ 'type' => 'apiKey', 'description' => 'API integration access token', 'name' => 'X-Access-Token', 'in' => 'header', ], ], 'security' => [ [ 'app_id' => [], 'access_token' => [], ], ], ],
生成的API文档中,点击Authorize按钮后会渲染出两个独立的输入字段。请问如何配置l5-swagger,将这两个Header认证字段合并展示,而非分开处理?
解决方案
要让两个Header认证字段在Authorize弹窗里合并展示,你需要把原本两个独立的apiKey安全方案合并成一个单一的HTTP类型安全方案,具体修改config/l5-swagger.php的配置如下:
'securityDefinitions' => [ 'securitySchemes' => [ 'app_credentials' => [ 'type' => 'http', 'scheme' => 'custom', 'description' => '请同时携带两个Header字段:`X-App-Id`(应用标识)和`X-Access-Token`(访问令牌)', ], ], 'security' => [ [ 'app_credentials' => [], ], ], ],
这样配置后,Authorize按钮点击后只会展示一个输入区域,你可以在描述里明确告知用户需要同时携带两个Header字段。
如果需要更精准的表单式合并展示,你需要自定义Swagger UI的前端模板,但上述配置是最简便的后端配置方式,无需额外修改前端文件。
内容的提问来源于stack exchange,提问作者Latheesan
相关产品推荐
相关产品推荐

