亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Spring Boot 接口文檔最佳實(shí)踐:ShowDoc 私有化部署與自動(dòng)化同步

Spring Boot 接口文檔最佳實(shí)踐:ShowDoc 私有化部署與自動(dòng)化同步 1. 先理解 ShowDoc 在 Spring Boot 開發(fā)里到底是什么角色做后端最煩的事情里維護(hù)接口文檔絕對(duì)能排進(jìn)前五。我之前在某團(tuán)隊(duì)接手一個(gè)訂單服務(wù)代碼里接口全有但文檔還停留在上一任同事離職前的 Word 版本前端聯(lián)調(diào)時(shí)對(duì)著舊文檔問(wèn)這個(gè)參數(shù)明明沒(méi)傳啊我一看代碼字段早改名了。就是從那時(shí)候開始我把 Spring Boot API 接口文檔的維護(hù)方式換成了 ShowDoc。這篇東西不是官方教程是我從部署到落地再到團(tuán)隊(duì)一起用起來(lái)的全過(guò)程記錄適合正在糾結(jié)要不要上文檔工具的后端開發(fā)也適合剛把 ShowDoc 裝起來(lái)但不知道怎么接入 Spring Boot 的讀者。1.1 ShowDoc 到底是個(gè)什么工具ShowDoc 從產(chǎn)品形態(tài)上說(shuō)是一個(gè)私有化、可部署的在線文檔系統(tǒng)。它最大的特點(diǎn)不是生成接口文檔而是什么文檔都能往里放。你可以新建一個(gè)接口項(xiàng)目用 Markdown 或富文本維護(hù)每個(gè)接口的 URL、header、請(qǐng)求體、返回示例、錯(cuò)誤碼也可以另開一個(gè)目錄把數(shù)據(jù)庫(kù)字段字典、環(huán)境配置說(shuō)明、部署手冊(cè)全部整理進(jìn)去。對(duì) Spring Boot 項(xiàng)目來(lái)說(shuō)一個(gè)好的接口文檔工具需要滿足三個(gè)條件第一能承載自動(dòng)生成的內(nèi)容第二能支持團(tuán)隊(duì)在線編輯和評(píng)論第三能控制訪問(wèn)權(quán)限。ShowDoc 恰好三點(diǎn)都占。它不像 Swagger UI 那樣只能展示 Swagger 注解生成的結(jié)果也不像某些以調(diào)試為核心的工具那樣只注重能不能調(diào)通它更像一個(gè)圍繞接口資料的內(nèi)部 Wiki接口信息只是其中一類頁(yè)面。1.2 和 Word、Swagger UI 的真實(shí)對(duì)比我在實(shí)際項(xiàng)目里用過(guò) Word、Swagger UI、ShowDoc 三種方式體驗(yàn)差別很大。Word 文檔的問(wèn)題是完全沒(méi)有強(qiáng)約束。誰(shuí)改了代碼不更新 Word沒(méi)人知道多人同時(shí)編輯時(shí)版本互相覆蓋文檔里寫詳見 XX 文檔最后根本找不到。Swagger UI 的問(wèn)題是能看不能用。它確實(shí)能根據(jù)注解實(shí)時(shí)生成接口列表也能在線調(diào)試但字段說(shuō)明、業(yè)務(wù)含義、錯(cuò)誤碼意思、數(shù)據(jù)字典這些靠注解很難寫清楚而且一旦項(xiàng)目多了Swagger UI 的導(dǎo)航會(huì)變得非常難用還經(jīng)常遇到跨域問(wèn)題。ShowDoc 的價(jià)值在于把這幾種工具的長(zhǎng)處合到一起接口列表從 OpenAPI 數(shù)據(jù)導(dǎo)入字段說(shuō)明、錯(cuò)誤碼、更新記錄靠編輯頁(yè)面補(bǔ)充訪問(wèn)權(quán)限按項(xiàng)目劃分歷史版本還能找回。我用下來(lái)最直觀的感受是前端拿到的不再是一堆 JSON schema而是一份他們自己能看懂的接口使用說(shuō)明。1.3 哪些項(xiàng)目適合選 ShowDoc不是所有團(tuán)隊(duì)都適合。如果是單機(jī)小 Demo直接看 Swagger UI 就夠如果團(tuán)隊(duì)規(guī)模很大已經(jīng)在用一體化 API 管理平臺(tái)也沒(méi)必要再引入 ShowDoc。ShowDoc 最合適的場(chǎng)景是接口數(shù)量中等幾十到幾百個(gè)、前后端協(xié)作流程還沒(méi)完全規(guī)范化、需要把接口文檔放在公司內(nèi)網(wǎng)、還需要有人能編輯權(quán)限的團(tuán)隊(duì)。我現(xiàn)在的團(tuán)隊(duì)就是用 Spring Boot 做微服務(wù)每個(gè)服務(wù)一個(gè)工程ShowDoc 按服務(wù)建項(xiàng)目實(shí)踐了半年效果比之前好太多。2. 部署 ShowDoc 服務(wù)我推薦私有化 Docker 方案ShowDoc 官方提供在線版但介于接口文檔通常帶有業(yè)務(wù)信息我不太建議把公司內(nèi)部接口丟給第三方。私有化部署是最穩(wěn)妥的選擇而 Docker 方案最省心。2.1 一條命令跑起來(lái)如果你服務(wù)器上已經(jīng)裝好 Docker啟動(dòng) ShowDoc 其實(shí)就是一句命令docker run -d \ --name showdoc \ --restartalways \ -p 4999:80 \ -v /data/showdoc_data:/var/www/html/ \ showdoc/showdoc這條命令做了三件事把容器命名為 showdoc方便后續(xù)查看日志和啟停用--restartalways保證服務(wù)器重啟后容器自動(dòng)拉起把宿主機(jī)的/data/showdoc_data目錄掛載到容器 Web 根目錄這樣文檔數(shù)據(jù)不會(huì)隨容器刪除而丟失。啟動(dòng)完成后訪問(wèn)http://服務(wù)器IP:4999走完初始化引導(dǎo)用默認(rèn)管理員賬號(hào)登錄并立即改掉密碼。這里特別提醒默認(rèn)端口 80 被很多人掛在公網(wǎng)上掃到過(guò)建議改成不常用端口再配合防火墻只放行內(nèi)網(wǎng) IP 訪問(wèn)。2.2 數(shù)據(jù)備份恢復(fù)的完整做法ShowDoc 的數(shù)據(jù)存在 MySQL 和文件目錄里容器化部署后這些底層細(xì)節(jié)被隱藏了我們只要保證掛載目錄安全就行。我的備份策略很簡(jiǎn)單每天凌晨壓縮整個(gè)掛載目錄保留最近 7 天。tar -czf /backup/showdoc_$(date %F).tar.gz -C /data showdoc_data find /backup -name showdoc_* -mtime 7 -exec rm -f {} \;恢復(fù)操作也直接新服務(wù)器上把備份文件解壓到同樣的/data目錄再跑一遍 docker run 命令數(shù)據(jù)就回來(lái)了。我踩過(guò)一次坑是早期沒(méi)意識(shí)到掛載目錄的重要性升級(jí)容器時(shí)直接刪了容器數(shù)據(jù)全丟。后來(lái)所有 docker run 都帶上-v掛載這個(gè)教訓(xùn)比任何配置都重要。2.3 項(xiàng)目和權(quán)限規(guī)劃要提前做ShowDoc 安裝好后第一件事不是寫接口而是規(guī)劃項(xiàng)目結(jié)構(gòu)。我建議按服務(wù)域建項(xiàng)目比如用戶服務(wù)、訂單服務(wù)、商品服務(wù)而不是把所有接口混到一個(gè)項(xiàng)目里。一個(gè)項(xiàng)目對(duì)應(yīng)一個(gè) ShowDoc 項(xiàng)目權(quán)限好控制文檔也好維護(hù)。在 ShowDoc 后臺(tái)項(xiàng)目可以設(shè)置為私有項(xiàng)目然后手動(dòng)添加成員。角色我習(xí)慣只開兩種后端主程是編輯者其他人是只讀成員。前端同學(xué)一般不需要編輯權(quán)限他們需要的只是穩(wěn)定的只讀地址。如果遇到要臨時(shí)修改文檔的情況再提升權(quán)限避免誤操作污染文檔。這一步看似簡(jiǎn)單但對(duì)后面的自動(dòng)化同步很關(guān)鍵因?yàn)闄?quán)限規(guī)劃直接決定 API Key 的使用范圍。3. Spring Boot 接入 ShowDoc核心是把 Swagger JSON 變成同步任務(wù)ShowDoc 有一個(gè)很實(shí)用的能力對(duì)外開放接口允許你把外部系統(tǒng)生成的文檔內(nèi)容直接寫入指定項(xiàng)目。這就給 Spring Boot 項(xiàng)目提供了一個(gè)自動(dòng)化方案用 SpringDoc 生成 OpenAPI JSON再把 JSON 轉(zhuǎn)成 ShowDoc 需要的頁(yè)面結(jié)構(gòu)最后通過(guò) ShowDoc 開放接口推送上去。3.1 為什么中間格式選 OpenAPI 而不是直接手寫市面上很多人誤以為用 ShowDoc 就等于放棄 Swagger。實(shí)際上兩者是配合關(guān)系。Spring Boot 項(xiàng)目里通過(guò)注解維護(hù)接口信息SpringDoc 會(huì)自動(dòng)生成/v3/api-docs的 OpenAPI JSON。這個(gè) JSON 是標(biāo)準(zhǔn)格式包含接口路徑、方法、參數(shù)、響應(yīng)體和說(shuō)明。ShowDoc 支持導(dǎo)入 OpenAPI 格式數(shù)據(jù)也支持用開放接口創(chuàng)建頁(yè)面。我之所以選擇 OpenAPI 作為中間層是因?yàn)樗鼉蛇叢怀蕴濋_發(fā)時(shí)用注解IDE 能檢查文檔更新時(shí)由腳本把 JSON 轉(zhuǎn)換推送不用人去一個(gè)個(gè)復(fù)制參數(shù)。如果哪一天團(tuán)隊(duì)決定換文檔工具OpenAPI JSON 還能繼續(xù)導(dǎo)入別的平臺(tái)數(shù)據(jù)不會(huì)被綁死。3.2 Spring Boot 側(cè)配置 SpringDoc在 Spring Boot 工程里加入 springdoc-openapi 依賴后它自動(dòng)掃描 Controller 上的注解。下面是基礎(chǔ)配置springdoc: api-docs: enabled: true path: /v3/api-docs swagger-ui: path: /swagger-ui.html啟動(dòng)項(xiàng)目后訪問(wèn)http://localhost:8080/v3/api-docs能看到一個(gè)很大的 JSON這就是 OpenAPI 數(shù)據(jù)。為了讓這個(gè) JSON 內(nèi)容夠完整Controller 類和方法上的注解要寫全稍后我會(huì)在第四節(jié)專門講字段規(guī)范。這里先記住一個(gè)原則注解里寫清楚的內(nèi)容會(huì)原樣進(jìn)入 ShowDoc注解里沒(méi)有的內(nèi)容后面就得靠手工補(bǔ)工作量大得多。3.3 同步服務(wù)的核心代碼ShowDoc 的開放接口邏輯是準(zhǔn)備好 API Key、API Token、項(xiàng)目 ID然后把文檔內(nèi)容 POST 上去。不同部署地址的開放接口路徑可能不一樣去后臺(tái)的開放 API頁(yè)面能看到當(dāng)前地址對(duì)應(yīng)的示例。我封裝的同步服務(wù)簡(jiǎn)化后是這樣Service public class ShowDocSyncService { private final RestTemplate restTemplate new RestTemplate(); Value(${showdoc.api-url}) private String apiUrl; Value(${showdoc.api-key}) private String apiKey; Value(${showdoc.api-token}) private String apiToken; Value(${showdoc.item-id}) private String itemId; public void syncFromSwagger(String swaggerJson) { // 這里把 OpenAPI JSON 轉(zhuǎn)換成 ShowDoc 的目錄和頁(yè)面結(jié)構(gòu) // 推薦的做法是遍歷 paths 節(jié)點(diǎn) // 每個(gè) tag 作為一個(gè)目錄每個(gè) pathmethod 作為一個(gè)頁(yè)面 ListMapString, Object catalogs Converter.toShowDocPages(swaggerJson); MultiValueMapString, String params new LinkedMultiValueMap(); params.add(api_key, apiKey); params.add(api_token, apiToken); params.add(item_id, itemId); params.add(data, JacksonUtils.toJson(catalogs)); ResponseEntityString response restTemplate.postForEntity(apiUrl, params, String.class); // 判斷 response body 中的狀態(tài)失敗則拋出異常 } }這個(gè)類的重點(diǎn)在Converter.toShowDocPages它負(fù)責(zé)把 Swagger JSON 里的paths和tags映射成 ShowDoc 頁(yè)面層級(jí)。比如一個(gè)用戶管理 tag 下有三個(gè)接口最終在 ShowDoc 里就是一個(gè)用戶管理目錄下面掛著三個(gè)接口頁(yè)面。轉(zhuǎn)換邏輯不難但要注意幾個(gè)問(wèn)題。第一OpenAPI 里同一個(gè) path 可能對(duì)應(yīng)多個(gè) HTTP 方法比如/user/{id}有 GET 和 PUT頁(yè)面標(biāo)題要帶上[GET]前綴否則同名頁(yè)面會(huì)互相覆蓋。第二ShowDoc 的頁(yè)面內(nèi)容是 Markdown轉(zhuǎn)換時(shí)要把請(qǐng)求體、響應(yīng)體、參數(shù)表轉(zhuǎn)成 Markdown 表格才能保證前端閱讀體驗(yàn)。第三不要把所有接口塞到一個(gè)頁(yè)面按接口頁(yè)面拆分方便單獨(dú)維護(hù)。3.4 觸發(fā)方式手動(dòng)按鈕 CI 自動(dòng)同步同步代碼寫好后觸發(fā)方式我推薦兩個(gè)層面。開發(fā)階段寫一個(gè) Spring Boot 單元測(cè)試或一個(gè)ApplicationRunner啟動(dòng)時(shí)打一個(gè)開關(guān)需要時(shí)手動(dòng)調(diào)用 sync 方法。發(fā)布階段在 CI 構(gòu)建腳本里加一段請(qǐng)求讓測(cè)試通過(guò)后自動(dòng)執(zhí)行同步。# 假設(shè)同步服務(wù)本身也暴露了一個(gè)受保護(hù)的 HTTP 接口 /sync/api-docs curl -X POST http://localhost:8080/sync/api-docs \ -H Content-Type: application/json \ -d {secret:your-sync-token}這里有一個(gè)特別容易踩的坑同步接口不要不加保護(hù)地暴露到公網(wǎng)。用 ShowDoc 開放接口時(shí)API Token 本身是一個(gè)高權(quán)限憑據(jù)任何拿到它的人都能直接修改文檔。所以代碼倉(cāng)庫(kù)里絕對(duì)不能提交真實(shí) token要用環(huán)境變量注入同步接口也要加一層自己的簽名。4. 讓文檔真正好用接口內(nèi)容規(guī)范比工具選型更重要我見過(guò)不少團(tuán)隊(duì)工具從 Word 換到 ShowDoc文檔還是一團(tuán)糟。原因很簡(jiǎn)單工具解決的是放哪不解決寫什么。Spring Boot 接口文檔要讓人愿意看核心是把字段、返回值、錯(cuò)誤碼這三件事說(shuō)清楚。4.1 統(tǒng)一返回結(jié)構(gòu)文檔里只放一個(gè)真實(shí)示例很多 Spring Boot 項(xiàng)目用ResultT包一層這沒(méi)問(wèn)題但接口文檔里最常見的錯(cuò)誤是所有接口的返回示例都寫成{code:0, message:成功, data:{}}data 里面到底長(zhǎng)什么樣完全沒(méi)說(shuō)。前端拿到這種文檔還是得來(lái)問(wèn)你。我的習(xí)慣是在 Controller 的注解里直接用具體響應(yīng)對(duì)象讓生成的 OpenAPI JSON 里能看到 data 的結(jié)構(gòu)。比如Operation(summary 查詢訂單詳情) GetMapping(/order/{id}) public ResultOrderDetailVO getOrder(PathVariable Long id) { return Result.success(orderService.getDetail(id)); }然后在OrderDetailVO的每個(gè)字段上寫Schema(description 訂單狀態(tài)0-待支付1-已支付2-已取消)。這樣 Swagger JSON 里的字段說(shuō)明完整同步到 ShowDoc 后前端就能直接看到 data 結(jié)構(gòu)而不是一個(gè)空的{}。4.2 字段說(shuō)明的五個(gè)必填項(xiàng)寫字段說(shuō)明時(shí)我要求團(tuán)隊(duì)每個(gè)字段至少回答五個(gè)問(wèn)題字段名是什么類型是什么string / integer / boolean / object / array是否必傳取值范圍或枚舉含義一個(gè)真實(shí)可用的示例值。舉個(gè)例子訂單狀態(tài)如果只寫狀態(tài)兩個(gè)字前端大概率搞不清楚如果寫成訂單狀態(tài)可選值1待支付、2已支付、3已取消示例2聯(lián)調(diào)效率會(huì)高很多。這些內(nèi)容都可以直接寫在Schema注解里。需要注意注解里的example屬性會(huì)進(jìn)入 OpenAPI JSONShowDoc 轉(zhuǎn)換后也可以保留所以示例值一定要填別嫌麻煩。4.3 錯(cuò)誤碼單獨(dú)維護(hù)一個(gè)頁(yè)面HTTP 狀態(tài)碼和業(yè)務(wù)錯(cuò)誤碼是兩碼事。很多接口返回 HTTP 200但業(yè)務(wù) code 是 10001 表示訂單不存在。如果文檔里不把業(yè)務(wù)錯(cuò)誤碼列清楚前端同事只能靠猜。我在 ShowDoc 項(xiàng)目里固定建一個(gè)錯(cuò)誤碼說(shuō)明目錄用 Markdown 表格維護(hù)所有業(yè)務(wù) code、含義、建議處理方式。這個(gè)目錄用腳本自動(dòng)同步時(shí)不要覆蓋保留給人工維護(hù)。錯(cuò)誤碼的規(guī)范要用排除法所有接口共用一個(gè) code 字段不要某個(gè)接口返回success、另一個(gè)接口返回status這種不一致是文檔大忌。4.4 目錄結(jié)構(gòu)要有頭腦不要全部堆在頂層ShowDoc 的項(xiàng)目頁(yè)面是按目錄組織的。目錄建議按業(yè)務(wù)模塊而不是Controller 類來(lái)建。比如訂單服務(wù)下面分訂單查詢訂單操作售后流程這樣前端按業(yè)務(wù)場(chǎng)景找接口比按類名一個(gè)一個(gè)翻要快。另外我會(huì)給每個(gè)模塊目錄配一個(gè)使用說(shuō)明頁(yè)面寫清楚這個(gè)模塊的業(yè)務(wù)背景、通用 header、必填 token、分頁(yè)規(guī)則。這類頁(yè)面用自動(dòng)化腳本創(chuàng)建一次就不動(dòng)了后續(xù)手工補(bǔ)充。把自動(dòng)同步生成的頁(yè)面和手工維護(hù)的頁(yè)面分開是防止腳本覆蓋人工內(nèi)容的最后一道防線。5. 團(tuán)隊(duì)協(xié)作中真正提升效率的四個(gè)習(xí)慣ShowDoc 安裝后如果只是一個(gè)人上傳文檔那它只是一個(gè)網(wǎng)盤。要讓它發(fā)揮價(jià)值必須把它嵌進(jìn)團(tuán)隊(duì)的工作流里。5.1 訪問(wèn)權(quán)限要分清API Key 也要分級(jí)別給前端同學(xué)分配只讀賬號(hào)而不是把項(xiàng)目鏈接直接扔到群里讓大家匿名訪問(wèn)這是我對(duì)團(tuán)隊(duì)的最低要求。只讀賬號(hào)的好處是可追溯、可撤銷新人進(jìn)來(lái)給他開賬號(hào)有人離職直接禁用不用換整個(gè)項(xiàng)目鏈接。對(duì)自動(dòng)化同步用的 API Key 也要單獨(dú)建一個(gè)機(jī)器人賬號(hào)不要拿管理員的 Key 去寫腳本。這樣就算腳本里的 Key 泄露權(quán)限只影響指定項(xiàng)目不會(huì)波及整個(gè) ShowDoc 服務(wù)。這個(gè)問(wèn)題容易被忽視我見過(guò)有團(tuán)隊(duì)把管理員 token 直接寫在前端代碼里最后整個(gè)文檔庫(kù)都被人清空了。5.2 Mock 數(shù)據(jù)與并行開發(fā)后端接口還沒(méi)寫完時(shí)前端最痛苦的是沒(méi)有數(shù)據(jù)可以聯(lián)調(diào)。ShowDoc 的頁(yè)面內(nèi)容本身就是 Markdown可以在里面維護(hù)一份完整的返回示例前端照著示例寫死數(shù)據(jù)先開發(fā)頁(yè)面。等后端好了再切換真實(shí)接口大部分邏輯不用改。這個(gè)方法比單獨(dú)搭 Mock 服務(wù)更輕量。我在實(shí)踐中的體會(huì)是Mock 服務(wù)適合接口數(shù)量大、團(tuán)隊(duì)已經(jīng)有一套流程的場(chǎng)景而 ShowDoc 加約定返回示例的方式適合中小團(tuán)隊(duì)讓前后端先對(duì)齊數(shù)據(jù)結(jié)構(gòu)。關(guān)鍵點(diǎn)在于返回示例必須寫的是真實(shí)數(shù)據(jù)結(jié)構(gòu)不能為了示例好看而編一個(gè)和實(shí)際代碼不一致的字段。否則前端按示例寫的數(shù)據(jù)結(jié)構(gòu)到了聯(lián)調(diào)階段全部要返工比沒(méi)有 Mock 更糟。5.3 把文檔更新動(dòng)作放進(jìn)發(fā)布流程最容易老化的文檔就是沒(méi)人主動(dòng)去更新的文檔。我現(xiàn)在要求只要后端接口有變更代碼合并之前必須把同步腳本跑一遍。這樣才能保證線上文檔和代碼是同一版本。你在 CI 里加一個(gè)步驟構(gòu)建成功后調(diào)用同步接口發(fā)布沒(méi)成功文檔就不會(huì)更新這個(gè)聯(lián)動(dòng)幫團(tuán)隊(duì)省了很多心。CI 腳本里要注意同步接口有網(wǎng)絡(luò)延遲建議加超時(shí)和重試。另外ShowDoc 同步過(guò)程是整體更新還是增量更新取決于你轉(zhuǎn)換器的實(shí)現(xiàn)我這邊是用按目錄重建的方式只更新自動(dòng)生成目錄下的頁(yè)面所以即使同步失敗ShowDoc 上還有上一次的舊數(shù)據(jù)不至于頁(yè)面全空。5.4 文檔變化主動(dòng)通知不要等前端來(lái)問(wèn)ShowDoc 本身不一定有很復(fù)雜的消息通知能力但這不影響我們做變更通知。同步腳本執(zhí)行成功后可以在最后調(diào)用一個(gè)通知地址把本次變更的接口清單發(fā)給協(xié)作群。我習(xí)慣在轉(zhuǎn)換器里記錄本次變更的路徑和方法拼成一段簡(jiǎn)短文本。這樣前端不用天天刷新文檔頁(yè)面看有沒(méi)有更新后端在群里說(shuō)一聲文檔已同步order 模塊新增了下單接口大家自然知道。通知邏輯不要放在同步接口內(nèi)部因?yàn)橥浇涌诳赡鼙欢啻斡|發(fā)應(yīng)該放在調(diào)用方CI 的任務(wù)里或者在同步接口返回結(jié)果后單獨(dú)發(fā)一次通知。這個(gè)細(xì)節(jié)能避免前端收到重復(fù)打擾。6. 兩年用下來(lái)我遇到的坑和最終建議每個(gè)工具都有一套看起來(lái)很美的文檔但真正的價(jià)值藏在坑里。最后這部分全是我的真實(shí)經(jīng)歷。6.1 四個(gè)最容易讓人崩潰的問(wèn)題第一個(gè)坑是升級(jí)容器丟數(shù)據(jù)。我早期用 docker run 部署時(shí)沒(méi)掛載目錄后來(lái)官方鏡像升級(jí)我直接把容器刪了重建結(jié)果所有文檔全部清空。解決辦法上面寫過(guò)掛載目錄 定時(shí)備份雙保險(xiǎn)。第二個(gè)坑是 API Key 泄露。某次代碼審查發(fā)現(xiàn)同步腳本里的 token 被硬編碼在配置文件中而且配置文件不小心被提交到了倉(cāng)庫(kù)。雖然事后改了 token但窗口期內(nèi)知道 token 的人都能改文檔很難追責(zé)?,F(xiàn)在所有密鑰一律走環(huán)境變量倉(cāng)庫(kù)里只放占位符。第三個(gè)坑是自動(dòng)同步覆蓋了手工補(bǔ)充。用了轉(zhuǎn)換器后腳本會(huì)把整個(gè)目錄重建手工維護(hù)的備注被沖掉過(guò)一次。后來(lái)我把自動(dòng)生成的頁(yè)面和手工維護(hù)頁(yè)面放在不同目錄腳本只處理帶自動(dòng)生成標(biāo)記的目錄。第四個(gè)坑是文檔看起來(lái)全但沒(méi)講清。打開頁(yè)面接口路徑、參數(shù)類型都有但沒(méi)有示例值、沒(méi)有枚舉含義前端依然要在群里問(wèn)。這屬于內(nèi)容規(guī)范問(wèn)題不是工具問(wèn)題解決方法是把 4.2 節(jié)五個(gè)必填項(xiàng)作為 Code Review 的一部分后端寫完接口自己先打開 ShowDoc 看一眼再提交。6.2 和其他方案比ShowDoc 的定位在哪里我不否定其他 API 文檔工具但每個(gè)工具的側(cè)重點(diǎn)不同。拿我們常用的對(duì)比維度看對(duì)比維度ShowDocSwagger UI 模式一體化調(diào)試管理平臺(tái)部署成本較低Docker 即可隨應(yīng)用部署較高通常要引入中心化服務(wù)自動(dòng)化程度靠 OpenAPI 轉(zhuǎn)換 開放接口本身自動(dòng)生成支持多渠道導(dǎo)入在線調(diào)試較弱不擅長(zhǎng)調(diào)試較好直接試接口很強(qiáng)集環(huán)境、斷言、集合團(tuán)隊(duì)協(xié)作權(quán)限、目錄、成員管理完善無(wú)權(quán)限概念偏平臺(tái)化適合較大團(tuán)隊(duì)私有化方便適合內(nèi)網(wǎng)隨服務(wù)內(nèi)網(wǎng)部署看版本多需商業(yè)授權(quán)如果你們團(tuán)隊(duì)接口數(shù)量多到需要集合管理、調(diào)試、Mock、自動(dòng)化測(cè)試那一體化管理平臺(tái)可能是更好的選擇。但對(duì)大部分中小團(tuán)隊(duì)ShowDoc 的輕量、私有化、配合 OpenAPI 自動(dòng)同步已經(jīng)能解決 80% 的問(wèn)題。工具換得越頻繁團(tuán)隊(duì)對(duì)文檔必須更新的敬畏感越低。6.3 我給正在入門的人三條建議第一條先部署再談規(guī)范。把 ShowDoc 跑起來(lái)手動(dòng)維護(hù)兩個(gè)接口試試手感比空想一個(gè)月都有效。第二條接入自動(dòng)同步前先把 Swagger 注解補(bǔ)完整否則自動(dòng)化推上去的也是垃圾內(nèi)容。第三條接受 ShowDoc 的不完美它不是一個(gè)在線調(diào)試器它是團(tuán)隊(duì)的知識(shí)庫(kù)你需要讓它展示內(nèi)容而不是承擔(dān)所有接口工具的角色。我現(xiàn)在團(tuán)隊(duì)里的日常流程就是Spring Boot 代碼就是規(guī)范SpringDoc 負(fù)責(zé)生成 OpenAPI JSON轉(zhuǎn)換器負(fù)責(zé)把 JSON 變成 ShowDoc 頁(yè)面CI 負(fù)責(zé)在發(fā)布后自動(dòng)同步前端在 ShowDoc 上看文檔、在協(xié)作群里接收變更通知。如果你也準(zhǔn)備把 ShowDoc 引入團(tuán)隊(duì)別追求一步到位。先把服務(wù)跑起來(lái)找兩個(gè)真實(shí)接口維護(hù)出示例然后讓前端把 Word 扔掉再慢慢加自動(dòng)化。工具永遠(yuǎn)不是重點(diǎn)重點(diǎn)是團(tuán)隊(duì)愿不愿意把接口信息當(dāng)成代碼的一部分去維護(hù)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
另类老少妇| 亚洲综人网| 九色 蝌蚪 熟女自 | 国产免费大片| 久草这里只有精品| 嗯嗯嗯啊啊啊在线免费观看| 91观看 国产白丝| 国产成人无码久久精品| 国产又黄又爽又刺激久久久久久| 操操AV电影| 欧美综合1性辶| 日本护士高潮| 国产精品久久蜜乳av| 伊人激情五月天一区二区| 亚洲、日韩、综合、另类| 久久久亚洲| 久7色| 婷婷探花久久精品一区| 国产剧情AV不卡在线观看| 歐美性天天| 久久成人国产精品| 97精品中文字幕| 久久91精品国产9丨久久分亭| 伊人久久亚洲色欲综合网站| 可以免费观看的日韩av毛片| 日韩AV无码中文一区二区| 三级日本一区二区三区| 亚洲婷婷综合网| 26UUU欧美日本| 欧美78p| 97色色国产视频| 资源在线观一 二| 综合网欧美在线| 99啪啪视频| 观看免费区二区三区二| 欧美人人天天网| 啊啊啊好大好深| 最近2018中文字幕在线高清第一页| 97在线精品观看视频| 婷婷中文网| 男女打扑克高清网站| 中英熟女操女| 久久男人网| 熟女网站最新| 精品国产乱码久久久久久网站入口| 巨乳特殊服务按摩| AVE乱伦| 日韩成人网址| 久久av色| 91xingse| www.久久超碰| 搡老女人老妇女AAA一VU麻豆 | 色五月婷婷麻豆在| s片在线观看| 香港久久久| 黑人娇小av在线播放| 一区二区三区亚洲| 日韩一级二级| 男人的天堂2019| 性做久久久久久久| 伊人精品国产| av绯色| 男人的天堂在线有码| 欧美一品道| 熟妇一区二区| 99免费在线视频| 欧美色一二三| 欧洲亚洲国产综合在线| 花野真衣| 亚洲欧美97| 人妻少妇精品久久久| 97在线观看| 天美一区在线| 久久五十路熟女人妻| 久久久婷婷| 麻豆成人AV| 天天搞在线综合网| 日本黄色天堂| 欧美亚洲首页| 日韩一级欧美一级在线观看| 色综合大香蕉| 丝袜六区| 无码高清少妇久久| 激情综合网一盗摄| 欧美中出1| 综合五月天| 亚洲人成网www| 日韩在线电影| 蜜汁欧美| 精品免费视频国产一区| 欧美另类自拍 | 激情综合网激情综合| 欧美亚洲综合色| 热99这里有精品综合久久| 宅男午夜在线视频| 国产女人与拘做受视频免费| 97爱碰| 狠狠色婷婷777| 精品78| 成人日本精品九区| www.色操逼| 97资源站日韩| 涩涩久久精品| 99热| 日本成a人v网站在线观看| 高清不卡国产| 啊啊啊啊啊啊啊国| 免费看日本操逼视频| 伊香蕉综合久久久久久久噜噜噜| 91艹| 岛国精品视频在线观看| www.91逼逼.com| 日韩兔费看黄片| 中文字幕免费看| 嗯~啊~快点 死我视频| 中文字幕亚洲热播人妻| 亚洲av无码国产精品字幕| 啊啊啊 在线| 1234区中文字幕在线观看_青青草国产在线_日韩一区二区 | 亚洲情色一区三区| 国产女人成人精品视频| 国产精品亚洲一级av第二区| 久久久久网站-538在线视频-欧美永久乱码 | 色九九九九| 日韩综合97P| 97欧美综合网| 日本韩国国产精品一区| 综合欧美激情网| 午夜丁香| 精品国产国产AV| 99超碰网| 美女写真| 欧美亚洲第1页| 日韩青久久| 日韩免费在线观看不卡| 一级A啪啪啪啪| 手机不卡视频不卡在线一二三区| 爱妻综合网| 2023天天操夜夜操| 色色色热| 另类老少妇| 久草视频观看视频在线| 九九九综合精品| 美女熟妇色| 日本一区二区三区免费观看| 婷婷五月天成人网| 精品网站99999| 激情文学 亚洲图片| 91热热色| 激情网色| 怡红院视频在线| 日韩国产品视频中文字| 欧美亚洲美少妇一区二区| 天天综合网入口~91| 成人一二| 另类亚洲一区二区三区| 丁香五月电影| 九九九九一区| 超碰免费人人| 日本在线999| 六月丁香婷| 欧美色图20p| 欧美日韩成人| 精品久| 91精品国产综合久久久蜜臀| 日韩十八禁| 特污免视频| 国产91影院| 精品一区二区三区四区女| 欧美五十路熟| 97jingpin| 亚洲精品中文字幕一区在线视频| 999九九精品| 999岛国大片| 女人久久久| 嫩草影院永久在线制服丝袜| 校园春色宗合网| 综合网少妇| 久久精品99| 国产精品国产| 亚洲色 国产 欧美 日韩| 很很操在线| 日韩激情中文字幕有码| 久久熟女嫩草成人片免费 | 在线国产探花| 久久女人| 97bbn| 九一性生活免费视频| 97国产高清视频在线观看| 久久一二三四五六七八九区| 91爽啪| 精品亚洲国产成人精品| 欧美日韩不卡传媒| 97爱b| 五月丁香在线| 久久超碰com| 色综合99999| 91蜜臀在线久久久久| 亚洲av无线观看| 亚洲精品白浆高清久久久久久| 另类图片五月天| 性爱AV天堂| 伊人影院在线理论播放| 一级久久性爱视频| 2020中文在线一区二区三区| 久久午夜色播影院免费高清| 九九九九九九免费视频| 久久国语| 亚洲精品1区| 美女大乳久久久久久久女人18| 日韩久久三区| 亚洲 综合 欧美| 97色97好| 久久97超碰| 欧美 日韩 国产传媒| 成人一级性爱| 狠狠操狠狠操操| 素人无码中文字幕| 九t超碰| 成人怡红院| 日躁天天爽爽| 一级A片女人高潮叫床| 欧美日韩夜夜| 97在线免费看| 亚洲偷拍自拍在线视频| 七久久久| SS久久| 精品人妻av区天天看片| 二男一女成人A片| 夜夜嗨AV蜜臀av| 蜜臀久久99精品久久久久久久久| 婷婷丁香五月综合| 大屁股熟女一区二区三区| 午夜美女福利视频| 五月婷婷激情综合| 五十路熟女人妻一区二区三区四区五| 婷婷人妻激情| 青青草久久| 一二三区精品视频| www.久久| 精品国产乱码久久久久久蜜臀| 免费中文综合精品| 一牛影视久久久一区二区三区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | av优播| 天天综合网在线91| 欧美国产日韩清纯唯美| 99re8超碰| 亚洲第一精品在线视频 | 午夜在线播放| 亚洲美女精品| 国产一级高跟丝袜| 操逼日韩无码 | 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久人妻四季| 人妻人久久精品中文字幕| 成人一级性爱| 国产久久久9999| 一区二区影视| 91亚洲黑人| 精品欧美乱码久| 国产又粗又又黄又猛| 9久久久久久| 中文字幕成人| www亚洲欧美| 91女在线观看| 为用户提供免费看黄网址在线观看| 大香蕉手机在线视频| 日本视频在线中文字幕| 精品国产一区二区久久| 天天狠操| 男人天堂最新手机版在线青青草| 欧美日本一区二区a人| 干b网| 日韩无码嘿咻黑热久| 爱爱啊啊啊| 爱欲AV| 日韩在线观看字幕精品| 老司机香蕉| 精品99999久久久久久| 思思热免费在线视频| 久久香蕉国产线看观看亚洲女人| 欧美后入式| 成人久久精品| 99久久久无码精品国产人| 大香蕉操久久| 偷拍五区| 国产福利夜| www欧美91| 97超碰人妻| 18禁止看精品中文字幕| 精品高清一区二区三区三州| 日日夜夜狠狠| 97伦乱| av天堂加勒比| 国产馆极品诱惑| 精品无码一区二区三区| 欧美狠狠弄| 人妻一区二区三区| 久插综合| 中文字幕欧洲有码| 丝袜av一区二区三区| 丁香色婷婷| 自拍偷拍2025在线观看| 亚洲射综合网| 日本色婷婷| 人人操人人大香蕉| av强奸乱轮| 国产亚洲日韩欧| 青娱乐国产剧情av一区| 麻豆亚洲AV成人无码久久精品| 国产亚洲福利第一页丝袜| 男同专区一区二区三区在线| 日韩色图 一区二区| 日韩在线电影| 午夜天堂精品久久| 欧美日韩国产传媒在线精品| 丁香色色网| 亚洲图片偷拍视频区| 日韩黄色成人性爱| 999岛国大片| 99久久9| 婷色五月天| 日韩精品区二区三区不卡| 狠狠欧美| 亚洲老司机123专区| 大但人体久久久久| 性91| 国产Aα| 思思热在线视频精品| 一区二区激情国产熟女 | 91人妻超碰| 日韩伦理久 久久 清纯 | 中文字幕精品亚洲熟女| 亚洲AV永久无码精品成人调教| 9久9久| www.久久制服糖| 成人日本视频人妻在线| 亚洲一区深夜| 青草伊人久久| 国产精品亚洲一区二区三区四区| 操逼操逼视频操逼| 天天摸天天舔天天操| 超碰 国产熟女精品一区| 另类小说综合网| 久久精品一区二区三区四区五区| 亚洲天堂男人的天堂| 97久久久| 秋霞无码av鲁丝片一区| 亚州高清av| 人人看人人摸人人色| 天天干2区3区| 亚洲 欧美综合| 丁香六月啪啪| 欧美日韩大香蕉| 日本在线播放不卡一区| 日韩成人大片在线观看| 爱爱动态试试看6 0秒| 黑人精品一区二区在线播放| 熟妇人妻一区二区三在线| 99日韩| 婷婷丁香人妻 | 亚洲性高潮| 国产精品麻豆成人AV艾秋| 国产毛片片精品天天看视频| 色噜噜人妻av 中文字幕| 国产sv美女内射| 深夜激情无码| 亚洲少妇诱惑| 强奸乱伦AV一天堂网| 久久精品性| 青娱乐国产精品| 91观看 国产白丝| 亚洲天堂 视频你懂的| 欧美在线 亚洲| 中日韩欧美精品无码AⅤ一区二区| 97精品视频免费| 国产精品视频自拍在线| 欧美精品宗合| 日韩一级二级三级| 私色综合网| 伊人一级免费黄片| 亚洲 综合 第一页| 青青草中文-久久青草精品一区二区三| 丰满熟女人妻一区二区三五十一路| www欧美性爱| 99在线精品视频| 五月天综合网| 激情久久av一区av二区av| 精品黄色电影| 国产成人主播| 五月天婷婷综合网| 免费公开人人操| 欧美伊人电影| 国产欧美成人精品| 日韩另类色图| 亚洲少妇综合在线播放| 久久中出| 玖玖无码超碰| 校园春色亚洲无码| 欧美少妇一区二区三区| 美女极品一区二区三区| 啪啪视频免费在线观看| 日韩人妻精品| 97视频7| 亚洲影视综合网| 懂色AV蜜臀无码精品APP| 家庭乱伦麻豆| 午夜成人福利影视| 欧美狠狠鲁| 天天综合官网| 91美腿丝袜在线观看| 白嫩少妇| 蜜臀久久99精品久久久久免费观| 欧美另类天堂| 亚洲色图欧美色图另类图片| 97无码视频在线播放| 91 丝袜在线播放| 日本精品999| av网站国产主播在线| 欧美大波激情xxxx| 黄片国产精品一区二区| 亚洲人人操| 欧美成熟性爱精品| 一牛影视成人片免费| 中文字幕亚韩| julia在线观看久久| 欧美美女后入| 少妇久久久久久| 亚洲 无码 偷拍| 日韩亚洲中文字幕在线| 密桃99999| n1038 一二三区| 九九九只有精品| 蜜臀无码视频在线观看| 亚洲经典啪啪| 99国产精品免费| 亚洲欧美激情小说| 国模私拍一区二区三区神乳| 国产大学生高潮在线播放 | 免费观看欧美日韩操逼视频| 东北女人| 9Ⅰ超碰| 日韩欧美午夜一区二区| 99成人| 是还免费视频1727我| 美女高潮国产高清| 欧美一区二区三区日韩| 成人黄页| 操婢日韩| 亚洲熟女乱色| 精品人妻av区天天看片| 亚洲激情综合| 99久在线精品99re8蜜桃| 欧美国产精品| 宗合情欲网| 啊v在线观看视频| 欧美特大黄一级片片免费| 久久99999| 精品福利| 69精品在线| 亚洲色图 91| 婷婷午夜成人色中色| 男人的天堂激情| 欧美亚洲手机在线| 伊人成人中文字幕久久网| 综合网亚洲1| 啪啪AV导航| 91熟女综合| 亚洲av无码国产精品字幕| 久草久热| 青娱乐福利99| 天天摸天天碰天天添青青| 国产午夜精品在线观看| 日韩美一区| 精品人妻一区二区三区日产乱码| 亚洲AV小说| 亚洲色图 欧美| 91人人爽人人爽| 欧美亚洲情色| 天天日日日射| 欧美性爱日韩性爱| 久久久久久久久国产| 亚洲二区精品在线观看| 青青草一区二区三区四| 国产三级电影免费观看| 精品久9| 少妇蜜汁| 亚码激情| 日韩簧片免费看| 日本九九久久99播| 精品人妻一区二区三区日产| 青青三级视频| 日韩有码免费视频| 91嫩草欧美| 超碰国产精品久| AV男人天堂网| 黄色片大香蕉| 亚洲AV乱码专区国产噜噜亚洲| 亚洲成?V人片在线观看福利| 天天综合,91入口| 五月丁香狠狠爱| 69精品| 亚熟在线| 国产日本久久免费精品| 羞涩视频| 丁香五月综合| 999熟女精品| 精品.99999| 国产精品日日摸天天碰| 日本久操视频| 欧美顶级黄色大片免费| 久久超碰com| 国模不卡一本二本三电影| 美中日韩无码| 麻豆天美91| 中国小夫妻勾搭露脸淫荡对白| 探花熟女,姿勢到位,體驗感也到位| 精品无码一区二区人妻久久蜜桃| 97人妻碰碰中文无码久热丝袜| 亚洲999综合| 亚洲色图超碰在线| 久久一二三四五六七八九区区区| 99性爱| 少妇500双飞99| 日本天天吊| 97在线播放 | 国产精品视频精品一二| 性爱视频无打码在线观看| 天天看夜夜看日日干| av天堂电影网| 亚洲欧美综合| 欧美中文字幕日韩在线| 久久精品一区二区一8| 国产精品不卡高清在线观看| 成年无码动漫av片无尽在线| 中文字幕后石码四区五区| 久久久久亚洲Av无码专区老牛影视| 91性网| 日韩精品在线视频,日韩精品……| 亚洲高清欧美总合| 蜜乳视频网站| 亚洲黄色a级片| 六月婷婷激情| 91老熟女逼| 久久精品日韩专区免费观看| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 插B在线观看| julia国产在线| 蜜臀99久久| 国产欧美岛国精品一区| 五月天色图影视| 97爱爱影院| 67914在线兔费成人视频| 丝袜足交视频| 韩国成人精品久久久免费看| 1024人妻| 91麻豆一二三区| 男人在线天堂| 国产超碰| 96国产污污污丝袜| 亚洲欧美情色| 91在线精品| 免费网色网站| 懂色Av| 激情五月综合| 国产97/欧美| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | chaopen97久久| 国产一级不卡在线观看| 神马久久久久久久久久| 黄视频免费| 麻豆九九九| 欧美组图日韩亚洲中文字幕| 1级黄色夫妻对换性交免费看| 巨爆乳一区二区爆乳区| 亚洲日本激情| 污污汅18禁网站在线永久免费观看| 无码人妻一区二区三区色欲aⅴ| 亚洲最新Av| 少妇一区二区三区高速| 青草青草久热| 91九九| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 欧美日韩久久精品爱爱| 中文字幕丰满人妻日本| 国产黄色影片在线观看| 国产强奸超碰AV| 亚洲综合五月天| 亚洲欧洲小说图片视频 | 狠狠婷婷亚洲中文综合久久| 久久成人国产精品| 中文字幕狠狠玩| 99精品在线| 青青草原综合久久大伊人精品| 夜夜综合| 久久久久久九九九九九| 成人自拍三级在线观看| 尤物一级在线免费观看| 情侣开房子拍 日韩无码 女的很漂亮| 久久深夜无码| 风韵犹存大大大大香蕉| 国产极品粉嫩馒头一线天av| 精品在线观看视频在线| 久久色激情一区二区三区| 欧美日韩亚洲五月天婷婷| 新怡红院| 天天操天天干一区二区| 亚洲有薄码区日本系列中文字幕| 久久九精品| 久9九综合在线| 无码精品人妻一区二区三区妖精 | 99精品丰满人妻无码| 91这里只有精品| 亚洲色图日韩精品| 夜夜操天天肏| 久久嫩草| 一区二区三区激情在线观看| 亚洲综合影视| 91精品老女人| 狠狠综合网| 国产五码丝袜屁眼| 91香蕉国产尤物视频| 福利色色| 91精品国产乱码| a片久久久久久久久久久久 | 熟妇人妻精品一区二区视频色欲| 国外91| 欧美成人A√在线一区二区| 五月天综合| 老鸭窝成人| 亚洲最新中文字幕免费| 亚洲精品骚逼| 一级片视频啪啪| 欧美一级三级| 成人性交午夜免费片| 国产精品久久久久综合| 性欧美精| 欧美日韩在线国产在线| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 人人妻人人玩人人澡人人爽| 国产又色又爽又舒服的三级视频| 日日日骚女人精品| 久久久久免费看少妇A片特黄| 内射白嫩美女| 九九九久久久| 有码免费观看| 超碰午夜| 欧美综合色站| 成人av影院在线观看| 欧亚久久偷拍视频| 亚洲精品免费中文字幕| 91骚妇| 免费一级a毛片久久久久久鸭绿欲| 青苹果影院男人的天堂| 日韩av免费一级电影| 久插综合| 午夜啪啪片| 一级黄碟| 99人人干| 国产91 丝袜在线播放00-百度| 成人情色一区二区| 试看日韩黄片| 神马午夜久久久| 国产日逼视频| 福利五区| 欧州色图区| yaouchengrenav| 久干网| 欧美自拍偷拍免费观看| 校园春色AV天堂| 男人天堂.AB| 国产又色又粗又黄又爽| 超碰无码五月97| 亚洲少妇中文字幕网址| 久久岛国| 日本淫穴在线| 97香蕉碰碰人妻国产欧美| 啊啊啊爽爽| 91色黑人少妇| 欧美激情中文字幕另类小说| 综合色一区三区二区| 国产精品肉丝自拍| 八人操人人摸人人看| 另类图片五月天| 日韩中文字幕熟妇人妻 | 国产suv精品一区二区四区999| 亚洲无码超碰免费| 五月天人妻综合| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 操逼操逼逼操操逼91| 99热欧美| 激情亚洲天堂| 五月婷婷无码| 日韩av不卡在线看| 少妇国产不卡| 破苞ⅩXXX性无码动漫无码| 伊人久久久日韩一区| 国产精品蜜臀久久久久无码AV| 91 丝袜在线| 天天欧美色| 91中文在线| 久久久久97| 久久精品一区二区三区蜜桃臀| 亚洲人妻一区二区三区| 2020中文在线一区二区三区| AV色女综合| 蜜屁Av| 狼天天狼天天大香蕉| 国产区性爱在线视频秋霞豆| 色牛aV| 97超碰影音| 日韩精品99久久久久久中文字幕| 激情第四色| AV无码久久久精品| 日本免费中文字幕在线| 国产高清成人免费视频| 天美av在线| 亚洲性少妇| 欧美性后入| 男人亚洲91首页在线| 日本在线视频导航| 精品成人动漫一区二区| 强奸乱伦AV一天堂网| 久久久久久999| 亚洲AV色图一区| 欧美 亚洲 另类 综合| 超碰亚洲欧美日韩无| 五月丁香激情综合网| 日韩人成网站在线播放| 亚洲无线码欧洲精品区别| 亚洲人天堂| 一区二区影视| 蜜臀久久99精品久久久久久婷婷 | 欧美在线亚洲| 欧美在线|亚洲| 久久草视频污视频| 超碰碰激情97+久| 亚洲自拍欧美国产首页网曝 | 美女丝袜激情小说| 亚洲91网站| 中文字幕久久亚州无码| 久操网在线| 一区,二区,三区视频| 熟女欧美日韩综合婷婷| 96免费视频在线| 91中文精品日韩欧美在线 | 91狠狠综合久久| 午夜传煤十二区精品| 99少妇| 国产97av| 欧美第二页| 亚洲中文字幕熟女| 久9re热视频这里只有精品| 操一操摸一摸| 伊人一区二区在线播放| 26uuu欧美日韩| 国产高清在线观看欧美| 日本高清_区二区三区| 亚洲AV无码国产精品久久久久| 欧美一区二区三区日韩| 丁香五月色情| oumeisetu综合| 亚洲欧美另类少妇精品| 欧日韩在线观看| 肉丝无码中文高清| 久久亚洲一区二区色婷婷| 中文字幕一区二区无码成人| 丰满人妻区一区二区三| 天天插夜夜操| 日韩av一级黄片| 国产成人网址| 高清不卡视频| 亚州国产成人精品女人久久| 大香蕉草草| 中文AV制服乱伦| 93人人操人人| 久久久一区二区三区四曲免费听| 射欧美综合| 黄色一区三区| 一区二区三区国产在线播放 | 深夜啪啪啪视频免费| 春色校园综合网| 人妻素股| 热99这里有精品综合久久| 午夜AV人气不卡| 国产精品色色| 在线亚洲丝袜视频网站| 精品九区| 韩国午夜理伦三级好看| 天堂av2019| 五月天亚洲网| 欧美福利视频啊啊啊啊| 熟妇操花| 色九九九综合| 国产99999| 久操网线| 超碰性爱97| 久久久久99精品成人片蜜臀| 人人 操人人 操人人| 五月丁香影院| 亚洲文学偷乱拍啪啪啪啪| 91色交| 不卡免费av在线播放| 影音综合网| 91中文字幕制服丝袜免费视频| 国产h片在线观看视频| 亚洲人精品久久久喷水| 超碰4A| 无码操逼网| 日han少妇无码| 夜夜欢天天干| 国产精品无码AV网站| 日韩懂色网| 久久老女人| 丁香五月综合| 久9综合在线| 亚乱色| 亚洲综合性网址| 日韩精品一区二区高清| 91爱综合| 91精品人妻一区二区三区蜜桃| 国内精品伊人久久久久影院会| 久干网| 亚洲国产ⅴ高清在线观看| 国产精品一区二区在钱播放| 春色综合网| www.激情| 亚洲同性aV综合| 亚洲成A∨人影院在线欢看| 欧美性爱一区二区三区四区| 久草尤物| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 91精品成人www| 91亚洲欧美激情| 九九无码| 色逼综合| 久久精品视频久久久| 香蕉人欧美综合| 中文字幕高清20页视频| 亚州男人天堂| 精品夜夜澡人妻无码| 欧美亚洲| 亚洲永久AV无码精品秋霞| 91精品人妻偷情| 亚射在线| 人人 操人人 操人人| 超碰97久久国| www成人啪啪18秘 免费| yazhououmeizongya| 99热66| 91搡老女人老妇女老熟女歌词翻译| 亚洲丝袜色| 亚洲人成网站7777| 日本人妻天堂网站在线播放| 久久东京伊人一本到鬼色| 色综合20p| www.人人cao| 五月天亚洲色图| 香蕉99秘 精品一区丁香| 一区二区三区免费视频入口| 妇人噜噜| 国产精品无码AV网站| 97伊人| 色一射色一射| 神马久久久久久伦理片| 欧美亚洲清纯| 116美女午夜| 国产一区二区三区免费视频在性观看 | 九九九综合精品| 日本免费人成视频播放120秒| 97久久国产精品| 蜜桃久久综合视频| 久久免费99精品久久久久久| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 中国国产精品一区视频| 97视频免费在线| 麻豆2区1区天美| 青娱乐国产剧情av一区| 麻豆 亚洲 97| 中文无线日韩一区| 张柏芝国产一区在线观看| 国产精品干干干| 亚洲天堂区| 欧美激情亚洲情色| 国产aⅴ无码片毛片一级网站| 日韩欧美tv一区二区在线观看| 91 丝袜在线| 亚洲第2页| 色图综合网| 国产热av| 亚91亚洲网| 操一区| 伊人久久在线视频观看| 国产人妻久久精品一区二区三区| 日欧美色| 五月天婷婷成人网| 久久国产免费激情视频| 欧美色图91| 久久亚洲天堂| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲日本激情| 中文字幕三四五区| 国产女主播视频在线观看| 精品久久久中文字幕不| 97碰在线视频| 在线看片国产精品每日更新| 亚洲一区日韩精品中文字幕| 精品无码一区二区三区| 东京热av男人的天堂| 精品91摸| 亚洲男人的天堂亚洲| 日韩在线观看字幕精品| 亚川综合视频| 国产偷人伦激情在线观看| 91白嫩| 一级免费精品| 成熟熟女国产精品一区二区| 亚洲精品一二三四区| 天天日少妇逼AV| 色综合色欲色综合色综合色综合| 亚洲免费在线探花| 天天日天天干天天色| 中国人高清www色视频免费| 麻豆天美在线| 风间由美日韩欧美久久| 茄子社区国产精品| 日本高清熟女久久一区| www.91欧美| 久草婷婷| 亚洲高清内射| 青久操| 嫩草伊人久久精品| 5252色欧美在线| 97香蕉人人乳| 欧美日本天堂| 91国产美女丝袜足交精品视频| 欧美色图天堂网m| 久久9亚洲| 中文字幕视频2区| 台湾佬中文娱乐自偷自拍| 日本天堂网| 老熟女熟妇| 青春草A| 欧美一级专区免费大片| 搡老女人老91妇女熟女| 国产后入清纯| 免费男人的天堂| 青女偷拍网| 色九久| 2017av无码免费无线播| 国产无码久久高清| 国产欧美日本亚洲精品| 操逼日批| 久久久精品无码亚免费| 婷婷亚洲综合| 超碰97精品在线| 日韩超碰精品综合| 欧美 亚洲 另类 综合| 天天影视之亚洲综合网| 91女日逼| 老司机午夜精品视频| 免费一级性爱久久| 无码日韩网站| 另类图片五月| 中文在线久久字幕| 97 国产精品| 色九久| 久久久久久久久久久免费精品| 太久视频| 青青草日韩无码| 欧美色图片91| www.av不卡中文字幕| 亚洲欧美91| 秋霞操逼片| 青青草丝袜在线视频| 欧美亚洲国内自拍| 亚洲色资源| 91精品人妻一区二区三区蜜桃| 国产精品com| 性色av网站| 日本有码影片下载 | 先锋影音av先锋一区| www国产天美久久久| 又黄又爽在线观看视频| 久神马| 中文字幕乱亚洲美女精品一区| 国产精品久久久久久亚洲色欲| 粉嫩av在线一区二区| 久操九九九九| 欧美女同在线| 国产辣妈在线视频福利| 午夜福利一区二区三区四区五区色婷婷| 超碰这里只有精品| 久区视频| 日韩精品在线视频在线观看| 精品久久久久瑟瑟| 欧美视频在线视频免费va| 9热9热综合网| 蜜臀中文无码午夜| 自拍偷拍国产欧美日韩韩| 美国一区二区免费视频| 97色爱| 色网亚洲人| 91深夜夜| 国产精品久久发布| 女人香蕉久久毛毛片精品| 一个国产在线综合网站| 蜜桃色色网站视频三区| 人妻素股| 国产黄色影片在线观看| 熟女丰满人妻一区| 亚洲97网站| 免费精品人妻一区二区三| 亚洲精品97在线| 久久香蕉国产线看观看亚洲女人| 无码av永久免费专区网站| 欧美日本久久精品一区| 亚洲三级。日韩三级| 精品性爱一区二区| 国产精品视频在线播放| 国产1024在线播放| 人妻天天操天天爽视频免费| 美女十八禁| 久久AV无码网址| 久久久精品久久| 亚洲伊人a线观看视频| 嫩草 人人网精品| 人妻少妇久久中文字幕一区二区 麻豆 | 日韩综合色图| 九九色精品| 91老妇女| 国内精品久久久久影院亚洲| 欧洲精品区| 亚洲精品影视老司机| 麻豆 亚洲 97| 久久精品毛片免费不卡| 亚州色国| 精品偷拍13p欧美dodk视频| 操死我了嗯嗯嗯| 国产成人99久久亚洲综合| 超硑97精品| 国产无码高清操逼视频| 97se综合网| 久久欲| 一区二区视频你懂的| 国产人妖视频一区在线观看| 东北女人| 免费啪啪av| 中文字幕AV片| 黄色一区二区秘书性感| 爱妻综合网| 偷窥自拍亚洲天堂网爆| 草B在线| 嗯嗯啊在线视频| 97欧美在线| 熟妇亚洲一区二区三区| 欧美精品23| 美女91av| 婷婷亚洲综合| 啪啪综合网| 欧美色图私拍91| 在线播放一级无码视频| 欧美在线综合| 五月天激情小说网| 在线a亚洲视频播放在线| 欧美五区| 人妻中文字幕日韩电影| 日本亚洲嫩草影院啪啪| 精品久久青青草| 亚洲精品国产日韩无码AV永久免| 欧美亚洲宗合色性图| 人成午夜免费大片| 日少妇视频| 男人天堂综合| 婷婷五月天久久久| 精品九九| 走光一区92下载| 激情五月天丁香| 亚欧毛片基地国产毛片基地| 日本97久久| 国产精品久久发布| 日韩人成网站在线播放| 精品一区二区三区丰满熟女-亚洲欧美一区| 国产四虎在线| 天天色播亚洲综合网站| 屁股久久久久久久| 岛国999| 97资源超碰| 人妻中文字幕日韩电影| 好色综合| 精品一区二区久久| 亚洲不卡不卡中文字幕不卡| 欧美操逼熟女| 日韩无码极品| 四虎影视 亚洲无码| 久久免费中文字幕在线观看| 天天肏夜夜肏| 久久久久久国产手机AV| 日韩欧美被操黄免费观看| 精品人人插人人操| 中文色综合| 亚洲黄色| 天天情欲宗合网| 精爱久久| 日本福利社| 亚欧Av| 亚洲国产精品成人久久蜜臀| 九九综合久久| 久久精品无码不卡| 久久久久久久少妇| 日韩精品资源专区二区| 26uuu国产成人综合| 久久日韩肥臀| 欧美久久婷婷| 日韩无码专区| 久草免费福利在线播放| 久操网无码在线| 欧美亚洲日韩16色| 色五月综合网| 亚洲欧美日韩精品久| 人人玩人人添人人澡免费| 日少妇视频| 91熟女丨老女人| 黄站在线免费观看| 手机av亚洲丝袜美腿日韩第一页二页| 91在线丝袜| 夜夜久久| 欧美性,色九九| 国产黄a三级三级三级av在线看 | 久久性爱免费送| 综合操逼| 福利视频一区二区微拍| 热久久国产| 欧美日韩色综合网| 一本精品日本在线视频精品| 啪啪性爱免费视频| 91网站18| 92一区二区| 精品国产乱码久久| 综合夜夜| 日产操逼| 91久久久亚洲| 黄色免费一级在线毛片| 亚洲成a人v欧美综合天堂下载| 2017天天插| 亚洲综合在线第一页| 好吊色综合| 无码人妻精品酒店| 凹凸视频在线一区二区| 久久久性| 人人操人人爽人人操人人| 一个色导综合| 日本免费人成视频播放120秒| 亚洲三区视频| 色色福利| 国模精品娜娜一二三区| 91超级碰碰| 亚洲色图久久精品蜜| 久久99国产综合精品女同|