一. 運用背景
生成的在線接少與前端人員/app開發人員的口文檔確實減溝通成本,但是由於項目比較龐大,一個項目的接口由N多人同時開發,並且有成千上萬個接口,這時候就出現了一個問題:當後端開發人員想去查看自己的開發的接口,或者是某個接口,就變得很頭疼,只能手動去尋找。 萌生了把Swagger頂部的搜索改成更契合需求的
① 接口名稱查詢
② 開發作者查詢
二. 解決思路/方案
去掉頂部搜索“explore”按鈕事件==>>綁定新的“搜索”按鈕事件==>>用戶點擊“搜索”前確保所有接口正常(避免二次搜索問題)==>>通過自帶的search函數搜索標題含有的字符串==>>通過操作dom對象隱藏節點
代碼源文件我直接放Git上,寫的有點粗糙,可以優化整理下,地址(https://github.com/WatermelonMk/swaggerSearch)
或者CSDN下載資源:https://download.csdn.net/download/watermelonmk/11004522
只要替換掉dist目錄下(別弄錯了):index.html 和 swagger-ui-standalone-preset.js
效果圖(左原圖,右搜索後效果圖):
三. 跨域問題解決方案
建議在每個模塊的控制層先不要繼承ActiveController,可以在中間先繼承CommonController(看自己命名了),然後再繼承ActiveController,然後再把這個加進去。然後在每個模塊的控制層用ArrayHelper::merge方法拼接上這個。
public function behaviors() {
$behaviors['corsFilter'] = [
'class' => 'yii\filters\Cors',
'cors' => [
'Origin' => '*',
'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Credentials' => true,
],
];
}