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

ARTICLE DETAIL

資訊詳情

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

RESTful接口設(shè)計實(shí)戰(zhàn):從資源建模到錯誤響應(yīng),一份避坑指南

RESTful接口設(shè)計實(shí)戰(zhàn):從資源建模到錯誤響應(yīng),一份避坑指南 做后端這些年我算是把API這兩個字從喜歡寫到看吐了。很多團(tuán)隊的RESTful接口設(shè)計說白了就是把URL當(dāng)成動詞命名大賽getUserInfo、deleteOrderByID、checkOrderStatus……這類路由一多整個接口層就變成了一堆函數(shù)名的HTTP搬運(yùn)工。更麻煩的是調(diào)用方拿到這種接口根本不知道怎么猜、怎么復(fù)用前端聯(lián)調(diào)天天吵第三方對接文檔寫了一厚本還是被反復(fù)問。這篇文章想聊的就是RESTful接口設(shè)計里那些真正決定協(xié)作效率和系統(tǒng)穩(wěn)定性的東西資源怎么建模、URL怎么寫才不算亂來、狀態(tài)碼怎么選才語義清晰、錯誤響應(yīng)怎么設(shè)計才能讓調(diào)用方一眼看懂以及我做過的幾次接口重構(gòu)復(fù)盤。不是教科書式的理論復(fù)述是踩過坑之后覺得早該這么干的經(jīng)驗(yàn)總結(jié)。1. 先說清楚REST不是URL美學(xué)而是一套資源建模思想很多團(tuán)隊以為RESTful就是把URL寫好看一點(diǎn)實(shí)際上這只看到了皮毛。REST的核心思想是把系統(tǒng)里的一切業(yè)務(wù)對象都抽象為資源客戶端通過統(tǒng)一的方法HTTP動詞對資源做操作服務(wù)端負(fù)責(zé)資源的存儲、校驗(yàn)和狀態(tài)轉(zhuǎn)移。URL只是資源的位置標(biāo)識不是操作指令。1.1 偽RESTful接口長什么樣我見過最典型的偽RESTful寫法就是接口路徑里全是動詞POST /api/order/getOrderInfo GET /api/order/deleteItem POST /api/user/checkPassword POST /api/order/updateStatus這種寫法的問題在于它把HTTP當(dāng)成了RPC調(diào)用通道URL命名完全面向動作而不是面向?qū)ο?。結(jié)果就是接口列表越寫越長因?yàn)槊吭黾右粋€動作就要新增一個URL調(diào)用方也沒法從URL推斷出數(shù)據(jù)和操作之間的關(guān)系每次都要翻文檔才能確定這個接口到底傳什么、返回什么、刪了會不會不可恢復(fù)。為什么會普遍出現(xiàn)這種現(xiàn)象一方面是因?yàn)楹芏嚅_發(fā)者最早的編程習(xí)慣是寫函數(shù)拿到需求第一反應(yīng)是我需要一個查訂單的方法于是直接就寫成了getOrderInfo另一方面是團(tuán)隊缺乏一個統(tǒng)一的建模過程接口設(shè)計變成了誰開發(fā)誰拍腦袋風(fēng)格全憑個人習(xí)慣。1.2 資源、表示與狀態(tài)轉(zhuǎn)移三句話建立建模意識要把RESTful做對先記住三個詞資源Resource、表示Representation、狀態(tài)轉(zhuǎn)移State Transfer。資源系統(tǒng)中的業(yè)務(wù)對象比如用戶、訂單、評論、發(fā)票每個對象有一個唯一的URI標(biāo)識。表示資源在某個時刻的狀態(tài)表現(xiàn)通常是JSON或XML包含資源屬性和超媒體鏈接。狀態(tài)轉(zhuǎn)移通過HTTP方法改變資源狀態(tài)比如創(chuàng)建是POST更新是PUT/PATCH刪除是DELETE。用生活類比把服務(wù)端想象成一個圖書館資源是書架上的書。你去圖書館是通過書的位置URI找到書而不是通過動作名稱getBookFromShelf去找。書的內(nèi)容會變狀態(tài)轉(zhuǎn)移但書的位置不應(yīng)該變。你的URL只負(fù)責(zé)告訴別人書在哪至于借走、還回、修補(bǔ)那是方法HTTP動詞的事。1.3 為什么必須在設(shè)計前先把資源地圖畫出來我在實(shí)際項目里發(fā)現(xiàn)接口設(shè)計得亂往往不是寫代碼的時候才亂的而是需求評審階段就沒有做資源識別。推薦做法是拿到業(yè)務(wù)需求后先枚舉出一份名詞清單把里面所有業(yè)務(wù)對象列出來再分析對象之間是什么關(guān)系一對一、一對多、多對多最后才決定URL層級和查詢方式。比如一個二手交易系統(tǒng)名詞清單大致是用戶、商品、訂單、支付單、退款單、評價、收藏。那接口方向就很清晰了/users /users/{id} /users/{id}/orders /products /products/{id} /orders /orders/{id} /refunds有了這份資源地圖你再去看改商品狀態(tài)該用哪個URL就不會糾結(jié)了。它一定落在/products/{id}的資源上通過PATCH改字段而不是單獨(dú)發(fā)明一個/product/changeStatus。2. URL規(guī)范讓名詞說話把動詞請出路徑URL是接口的門面也是調(diào)用方最容易感知的部分。一套穩(wěn)定、可預(yù)測、一眼就能看懂寫的是什么資源的URL規(guī)范比任何注釋都更能減少溝通成本。2.1 資源命名的基本規(guī)則我自己長期用的規(guī)則可以當(dāng)成一套默認(rèn)約定全部小寫路徑中單詞間用連字符-不要用下劃線_。原因是URL大小寫敏感不同團(tuán)隊、不同網(wǎng)關(guān)對大小寫的處理不一致小寫是最省事的公約連字符在讀URL時更自然手機(jī)上也不容易看錯。資源名用復(fù)數(shù)。/users、/orders不要寫/user。復(fù)數(shù)代表的是一類資源的集合語義上更統(tǒng)一也方便后續(xù)加/users/{id}時保持一致性。路徑里只放名詞不放動詞。動詞語義交給HTTP方法這是RESTful的核心分界線。單個資源的標(biāo)識用數(shù)字ID或UUID都可但在URL里不要出現(xiàn)ID這個字眼直接用值/users/123而不是/users/userId/123。2.2 子資源要不要嵌套嵌套幾層當(dāng)資源之間存在明確從屬關(guān)系時可以用嵌套表達(dá)/users/{id}/orders表示某個用戶的所有訂單。嵌套層級一般不要超過兩層超過兩層調(diào)用方和文檔都會亂。舉個例子/blogs/123/comments/456這種三層結(jié)構(gòu)其實(shí)可以接受但如果寫成/regions/1/cities/2/districts/3/streets/4這種四五層的維護(hù)起來就是災(zāi)難。遇到這種情況建議把鏈條底部的資源單獨(dú)拉平用查詢參數(shù)代替GET /comments?blog_id123comment_id456這樣路徑更短也更容易做緩存和權(quán)限控制。關(guān)鍵是團(tuán)隊里要有一條明確規(guī)則超過兩層扁平化。2.3 常見反例自查清單我整理了一份很實(shí)用的對照表接口審查的時候直接拿著過一遍就行錯誤寫法正確寫法理由/api/getUser?id1GET /users/1動詞進(jìn)了URL資源被拆散/api/deleteOrder?id1DELETE /orders/1刪除是HTTP方法的事/api/updateOrderStatusPATCH /orders/1狀態(tài)字段只是資源的一部分/api/checkOrderStatus?orderId1GET /orders/1/status狀態(tài)子資源化更清晰/api/user_savePOST /users不統(tǒng)一下劃線違和小寫連字符約定/api/getList?typeorderGET /orders同一個接口的另一種表達(dá)類型靠查詢參數(shù)細(xì)化這份清單價值在于它是從大量實(shí)際代碼里提煉出的高頻問題。接口評審時拿著它一票否決可以擋住一大半當(dāng)場覺得沒毛病三個月后想重構(gòu)的設(shè)計。2.4 什么時候允許動作出現(xiàn)在路徑里規(guī)則總有例外。我允許動詞進(jìn)入路徑只發(fā)生在一種場景這個操作本質(zhì)上不是對單個資源的簡單增刪改查而是一個領(lǐng)域動作或者說一次狀態(tài)機(jī)轉(zhuǎn)移。比如POST /tickets/123/cancel POST /orders/123/confirm這類接口雖然路徑里有動作但它是資源內(nèi)部的業(yè)務(wù)動作而且用POST天然表達(dá)了這個操作不是冪等的/有副作用的語義。如果你也想這么干我的建議是這種端點(diǎn)要克制一個資源最多四五個多了說明你的資源建模粒度有問題該把動作拆成狀態(tài)字段了。3. HTTP方法與狀態(tài)碼語義用對了調(diào)用方才能少寫一堆判斷接口設(shè)計里最容易被忽略、卻又最影響調(diào)用方體驗(yàn)的是HTTP方法和狀態(tài)碼的語義是否準(zhǔn)確。我接第三方API的時候最怕的不是報錯而是所有接口都返回200錯誤全藏在body里那才是災(zāi)難。3.1 方法語義與冪等性先明確一組方法的基本語義和冪等特性方法語義冪等性典型場景GET讀取資源冪等查詢詳情、列表POST創(chuàng)建資源非冪等下單、注冊PUT全量替換資源冪等更新整個資源PATCH部分更新資源不保證修改部分字段DELETE刪除資源冪等刪除某個ID冪等性為什么重要因?yàn)榫W(wǎng)絡(luò)是不靠譜的客戶端超時后會重試。如果接口不冪等重試一次就重復(fù)下一次單、重復(fù)插一條數(shù)據(jù)后果很嚴(yán)重。我見過一個線上事故客戶端因?yàn)槌瑫r重試了三次結(jié)果POST創(chuàng)建訂單接口被執(zhí)行了三次庫存直接對不上。后來我們給所有POST接口加了冪等鍵才解決。3.2 狀態(tài)碼怎么選才不擰巴選狀態(tài)碼的核心邏輯很簡單2xx表示請求正常完成4xx表示錯誤出在客戶端參數(shù)、權(quán)限、資源不存在5xx表示錯誤出在服務(wù)端。但落到具體場景時很多人會糾結(jié)。我的默認(rèn)選擇是這樣創(chuàng)建成功返回201帶Location頭指向新資源。查詢、更新、刪除成功返回200刪除成功返回204最標(biāo)準(zhǔn)也可以返回200但團(tuán)隊內(nèi)部要統(tǒng)一。請求參數(shù)缺損或格式錯誤返回400。身份驗(yàn)證失敗返回401沒有權(quán)限返回403。資源不存在返回404。資源沖突比如創(chuàng)建重復(fù)數(shù)據(jù)、狀態(tài)變更沖突返回409。參數(shù)合法但業(yè)務(wù)規(guī)則不滿足比如余額不足返回422。這里有一個非常常見的坑把業(yè)務(wù)校驗(yàn)失敗錯誤地返回成500。我見過不少后端把用戶余額不足直接return 500因?yàn)橛X得這是業(yè)務(wù)異常。問題是客戶端看到5xx會認(rèn)為服務(wù)端掛了從而觸發(fā)重試而余額不足這種業(yè)務(wù)錯誤重試一萬次也沒用。這種接口設(shè)計造成的不僅是調(diào)用方困惑還可能引發(fā)重試風(fēng)暴。業(yè)務(wù)校驗(yàn)失敗一律4xx這是底線。3.3 200 業(yè)務(wù)錯誤碼到底能不能用很多公司內(nèi)部的接口規(guī)范喜歡把HTTP狀態(tài)碼固定為200然后響應(yīng)體里用code字段表示成功失敗比如{code: -1, msg: error}。我不反對在內(nèi)部網(wǎng)關(guān)、BFF層這么玩因?yàn)楹芏嗬舷到y(tǒng)的HTTP客戶端封裝不允許讀4xx響應(yīng)體統(tǒng)一200是為了兼容。但如果你做的是面向公網(wǎng)、面向多團(tuán)隊協(xié)作的API我的建議是嚴(yán)格執(zhí)行HTTP狀態(tài)碼語義。原因是狀態(tài)碼本身是一種機(jī)器可讀的協(xié)議如果全部200調(diào)用方就必須解析body才能判斷結(jié)果這會讓成功/失敗的判斷標(biāo)準(zhǔn)散落在每個客戶端里長期維護(hù)成本極高。我實(shí)際觀測到的效果是采用完整狀態(tài)碼語義之后調(diào)用方SDK可以統(tǒng)一在HTTP層處理錯誤業(yè)務(wù)層代碼干凈一大截。4. 接口的長期演進(jìn)設(shè)計版本、過濾、分頁、排序一鍋端很多接口剛上線時只有一個列表接口沒有任何可擴(kuò)展性設(shè)計。等到業(yè)務(wù)迭代發(fā)現(xiàn)無法在不破壞老調(diào)用方的前提下加字段、改參數(shù)只能硬著頭皮v2重寫。其實(shí)把這個環(huán)節(jié)想清楚生命周期會舒服很多。4.1 版本控制放URL還是放Header版本號最直觀、最不容易被忽略的做法是放在URL路徑里比如/v1/users。好處是文檔、網(wǎng)關(guān)、日志都能直接看到缺點(diǎn)是路徑會變丑而且一旦客戶端把v1記死遷移成本照樣存在。也有團(tuán)隊把版本號放在Header里比如Accept: application/vnd.example.v1json這種做法的優(yōu)點(diǎn)是URL干凈但實(shí)際調(diào)試和排查問題很麻煩——看日志時很容易忽略Header導(dǎo)致同一個URL你根本分不清調(diào)的是哪個版本。我的結(jié)論是對外API版本號放URL。對內(nèi)API如果前端是自家團(tuán)隊統(tǒng)一管理Header方案可以用但要做好規(guī)范。至于版本策略我建議大改增版本小改向后兼容新增字段、新增可選參數(shù)直接加到現(xiàn)有版本不影響老調(diào)用方刪除字段、改變已有字段含義、修改狀態(tài)碼語義必須開新版本。4.2 分頁怎么做page/page_size 還是 cursor常規(guī)列表數(shù)據(jù)量不大時用最簡單直觀的page和page_size就行GET /orders?page2page_size20響應(yīng)里帶上總條數(shù)和分頁信息{ items: [], page: 2, page_size: 20, total: 156, total_pages: 8 }但當(dāng)你面對的是大數(shù)據(jù)量高并發(fā)場景比如千萬級用戶的動態(tài)列表page分頁會出現(xiàn)兩個問題大頁碼偏移量掃描慢并發(fā)寫入期間翻頁可能會看到重復(fù)或遺漏的數(shù)據(jù)。這時候要用游標(biāo)分頁cursor-based pagination一般用創(chuàng)建時間或ID做游標(biāo)GET /orders?cursoreyJpZCI6MTIzfQlimit20游標(biāo)分頁的響應(yīng)不返回total而是返回next_cursor和has_more客戶端拿著next_cursor繼續(xù)翻即可。我的經(jīng)驗(yàn)是常規(guī)管理后臺、中小規(guī)模業(yè)務(wù)用page即可面向C端用戶、數(shù)據(jù)量增長快的場景從一開始就用cursor避免上線一年后重構(gòu)。4.3 過濾、排序與字段裁剪過濾條件統(tǒng)一用查詢參數(shù)命名用單數(shù)名詞枚舉值用文檔明確列出GET /orders?statuspaidpayment_methodalipaystart_time2024-01-01end_time2024-02-01排序建議白名單化約定sortcreated_at表示升序sort-created_at表示降序。服務(wù)端只接受白名單內(nèi)的字段防止調(diào)用方傳任意SQL字段導(dǎo)致注入風(fēng)險GET /orders?sort-created_at,id字段裁剪sparse fields也是一種被大多數(shù)人忽略的優(yōu)化手段??蛻舳丝梢詡鱢ieldsid,amount,status服務(wù)端只返回這些字段。它在面向公網(wǎng)API里能顯著節(jié)約帶寬尤其是移動端弱網(wǎng)場景效果立竿見影。缺點(diǎn)是服務(wù)端多做一層字段映射校驗(yàn)但相比對端用戶的流量節(jié)省這點(diǎn)開銷很值。4.4 一個可以直接抄作業(yè)的列表接口示例把上面這些全部揉到一起一個完整且規(guī)范的列表接口大約長這樣curl https://api.example.com/v1/orders?statuspaidsort-created_atpage1page_size20fieldsid,amount,status,created_at響應(yīng)體{ items: [ { id: ord_20240101_001, amount: 99.5, status: paid, created_at: 2024-01-01T10:00:00Z } ], page: 1, page_size: 20, total: 145, total_pages: 8 }這個示例我建議直接存為團(tuán)隊模板。業(yè)務(wù)千差萬別但列表接口的骨架就是這些要素把骨架固定下來新增接口時只需要填充業(yè)務(wù)字段。5. 錯誤響應(yīng)才是接口的下半場把報錯信息當(dāng)成一等公民設(shè)計接口查詢和操作只是前半場真正考驗(yàn)設(shè)計功力的是錯誤響應(yīng)。我調(diào)試過很多第三方API最崩潰的體驗(yàn)是返回了一個既沒有錯誤碼、也沒有trace_id的字符串你根本不知道是參數(shù)錯了、權(quán)限錯了、還是服務(wù)端崩了。設(shè)計良好的錯誤響應(yīng)是接口質(zhì)量的試金石。5.1 一套能落地的統(tǒng)一錯誤結(jié)構(gòu)推薦錯誤響應(yīng)體長這樣{ error: { code: ORDER_NOT_FOUND, message: 訂單不存在或已被刪除, details: [ { field: order_id, message: 傳入的 order_id 不存在 } ], trace_id: 9f8e7d6c5b4a3210 } }幾個關(guān)鍵點(diǎn)code是穩(wěn)定、可枚舉的錯誤碼調(diào)用方用code做分支判斷不要解析message的文案。message是給人看的要給出發(fā)生了什么、為什么、怎么辦三個信息。details用于批量字段校驗(yàn)時列明每個字段的具體問題前端能直接映射到表單上。trace_id是定位服務(wù)端日志的錨點(diǎn)每次請求生成一個唯一ID客戶端報障時把trace_id甩給后端排查時間直接少一半。5.2 HTTP狀態(tài)碼和業(yè)務(wù)錯誤碼各管各的這里要區(qū)分清楚HTTP狀態(tài)碼是傳送層的粗粒度語義業(yè)務(wù)錯誤碼是業(yè)務(wù)層的細(xì)粒度語義。兩者要對應(yīng)但不要互相替代。我自己維護(hù)的映射經(jīng)驗(yàn)是大致這樣HTTP 狀態(tài)碼錯誤碼段典型場景400PARAM_ERROR 前綴參數(shù)缺失、格式錯誤、枚舉值不合法401AUTH_ERROR 前綴未認(rèn)證、密鑰錯誤、token過期403FORBIDDEN_ERROR 前綴無權(quán)限、被風(fēng)控攔截404NOT_FOUND 前綴資源不存在409CONFLICT 前綴重復(fù)創(chuàng)建、狀態(tài)沖突422BUSINESS_ERROR 前綴業(yè)務(wù)規(guī)則不滿足429RATE_LIMIT 前綴觸發(fā)限流5xxSERVER_ERROR 前綴服務(wù)端未知異常調(diào)用方只需要在HTTP層做一次粗判斷進(jìn)入業(yè)務(wù)層后用code做細(xì)處理。兩者各管各的既不會All-200也不會什么都往4xx里塞。5.3 三類不該出現(xiàn)的接口錯誤設(shè)計第一類把后端堆棧、SQL語句、整段的異常堆棧直接透傳給客戶端。這既不安全也對調(diào)用方毫無價值。服務(wù)端錯誤只暴露一個概括性message細(xì)節(jié)留到日志里。第二類同一個接口在不同版本、不同分支下錯誤響應(yīng)結(jié)構(gòu)一會兒是{code: 1}一會兒是{errorCode: 1}一會兒又變成了error字符串。這種接口會讓調(diào)用方SDK沒法統(tǒng)一解析只能一層層if-else。解決方式就是全量接入統(tǒng)一錯誤結(jié)構(gòu)老接口逐步收斂。第三類忽略了限流錯誤429和重試指引??蛻舳瞬l(fā)打過來服務(wù)端直接Connection reset客戶端也不知道要不要重試、等多久重試。正確做法是返回429同時帶上Retry-After頭告訴調(diào)用方請在3秒后再試。這個頭在HTTP協(xié)議里就有不用自己發(fā)明。5.4 冪等鍵和重試策略接口健壯性的最后一公里網(wǎng)絡(luò)不可靠超時重試在所難免所以寫接口的時候要把客戶端會重試當(dāng)成默認(rèn)前提。對非冪等的創(chuàng)建類接口建議支持冪等鍵Idempotency-Key調(diào)用方在請求頭里帶上Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000服務(wù)端以這個key為維度做去重和緩存響應(yīng)。第一次創(chuàng)建成功第二次重試直接返回第一次的結(jié)果不重復(fù)執(zhí)行。這樣既能保證可靠性又不會讓客戶端提心吊膽地試著提交第二次。重試策略上我給團(tuán)隊定的規(guī)則是GET請求可以自動重試兩到三次POST請求必須支持冪等鍵才能重試DELETE/PUT本身冪等可以重試但同樣要控制并發(fā)。好接口不光是能響應(yīng)還要讓調(diào)用方的錯誤處理邏輯變得簡單可預(yù)測。6. 一次真實(shí)的重構(gòu)復(fù)盤從天天被投訴到接口穩(wěn)定運(yùn)行理論講再多不如看一次真實(shí)重構(gòu)過程。這個項目是一個面向B端商戶的訂單服務(wù)系統(tǒng)歷史負(fù)債很深前端和第三方對接方都叫苦連天。我們用了大概兩個迭代來重構(gòu)接口層這里完整還原一遍思路。6.1 原始接口的問題清單接手時的老接口長這樣POST /order/getOrderInfo POST /order/deleteItem GET /order/getOrderListByStatus POST /order/updateOrderStatus一眼就能看出問題全部過程化命名POST和GET用得毫無規(guī)律。進(jìn)一步梳理后問題清單更扎眼查詢列表接口用POST返回數(shù)據(jù)還要翻好幾層才能拿到數(shù)組。刪除接口叫deleteItem但真實(shí)邏輯是把訂單項標(biāo)記為停用不刪數(shù)據(jù)。錯誤響應(yīng)三種格式并存有的返回{code: -1, msg: 失敗}有的直接字符串error: xxx還有的返回{status: failed, reason: ...}。狀態(tài)碼全返回200客戶端只能通過解析msg里的文字判斷錯誤原因而且msg文案前后不一致。6.2 排查與設(shè)計過程我們做的第一件事不是急著寫新接口而是整理了一份對接方報錯類型統(tǒng)計表把所有客戶端最常見的報錯場景列出來。發(fā)現(xiàn)有三大類分不清是參數(shù)錯誤還是權(quán)限錯誤客戶端日志里出現(xiàn)一批unexpected status 401 unauthorized之類的報錯但實(shí)際是token過期沒有刷新服務(wù)端錯誤信息卻沒有提示用戶該重新授權(quán)。遇到業(yè)務(wù)校驗(yàn)失敗時響應(yīng)不清晰調(diào)用方只能盲猜。列表接口沒有統(tǒng)一分頁每個子接口自己造一套參數(shù)。這個過程讓我深刻體會到客戶端報錯信息混亂的根源往往不是客戶端代碼寫得差而是服務(wù)端沒有給出足夠的錯誤語義。一個帶明確code、message、trace_id的錯誤響應(yīng)本身就能消化掉大量溝通成本。第二件事是畫新的資源地圖。我們把訂單服務(wù)里的名詞全部枚舉出來訂單、訂單項、物流、發(fā)票、售后、結(jié)算。然后確立一套新的URL規(guī)范GET /v1/orders POST /v1/orders GET /v1/orders/{id} PATCH /v1/orders/{id} DELETE /v1/orders/{id} GET /v1/orders/{id}/items POST /v1/orders/{id}/cancel同時定了狀態(tài)碼和錯誤碼映射表、統(tǒng)一錯誤結(jié)構(gòu)、分頁和排序規(guī)范。舊接口保留兼容期不做刪除但新接口一律按新規(guī)范走。第三件事是做兼容遷移。我們不搞一刀切而是用三個月時間走雙寫老調(diào)用方繼續(xù)用老接口新調(diào)用方和愿意改造的存量方切到新接口。期間對老接口做一層防腐層把老請求翻譯成新邏輯保證數(shù)據(jù)一致。三個月后老接口訪問量降到個位數(shù)才正式下線。6.3 重構(gòu)后的實(shí)際效果幾個數(shù)據(jù)變化非常直觀客戶端錯誤處理代碼從每個頁面各寫一套收斂為SDK里統(tǒng)一一套前端整體錯誤處理代碼減少約六成。對接第三方時對方不再反復(fù)問這個接口為什么報錯因?yàn)殄e誤碼和message已經(jīng)把原因講清楚了排障時間從按小時計降到按分鐘計。新增接口的評審成本大幅下降因?yàn)橘Y源建模和規(guī)范已經(jīng)固定新需求只需要套模板。如果讓我給一個最值得記住的建議接口設(shè)計這件事寧可設(shè)計階段多開兩次評審、多花兩天討論資源建模也別上線后讓幾十個調(diào)用方陪著你踩坑。RESTful不是銀彈但把資源、URL、狀態(tài)碼、錯誤響應(yīng)這幾個基礎(chǔ)決策做對系統(tǒng)的協(xié)作效率會有一個非常明顯的提升。最后再分享一個小技巧給團(tuán)隊維護(hù)一份接口反例與正例對照表每次代碼評審的時候打開對照一遍比反復(fù)講理論有用得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
天天添天天干电影| 久久久久久久国产视频| 淫乱图区 | 曰韩av中文字幕专区| 久草免费在线视频| 亚欧操逼片在线观看| 中文字幕 av v| 一区二区三区欧美激情| www.色五月| 国产真乱mangent| 熟女露脸激情自拍视频| 人人噜夜夜操| 99r九九| 人人干人人操人人..com| 亚洲成a人v欧美综合天堂下载| 欧洲精品久久| AV色五月| 精久久久| 九九九国产精品| 91美女国产在线| 欧美亚洲AN| 好吊妞转入那个网| 欧美综合自拍成人自拍第二十页| 国产亚洲一黄| 色眯眯射| 东北女人的毛片| 天无日色综合| 啪啪91| 久久黄黄| 老师充足的奶水小说| 99少妇精品视频| 九九综合久久| 丁香六月婷婷久久综合| 蜜臀久久一区二区| 久久久999日本大片| 看一级黄色视频| 俺去俺来也在线www| 免费亚洲黄色视频在线观看 | 精品大久久| 久久99国产综合精品女同| 一区二区你上我| 91丝袜美女国产| 日韩成人大片在线观看| 六十路日本| 97操操| 激情五月综合网| 五月丁香网站| 69综合网| 亚洲熟女乱色一区二区三区久久久| 白丝少妇一区二区| 夜夜嗨免费视频| 精品少妇一区二区| 一本色道久久天天射天天干| 国产精品无码在线| 色综合美国| 激情四射婷婷四五月天| 目产99999久久999| 久久久久久九九九九九九| 97视频新免费| 蜜臀一区二区三区在线| 成 人片 黄色大片| 这里都是精品在线观看| 国产suv精品一区二区四| 骚熟女吞| 亚洲精品人体| 欧美亚洲色图另类国产| 密桃99999| 强上我不卡卡| 欧洲大香蕉| 青青操日韩| 麻豆成人AV| 午夜视频黄| 波多野结衣被操50分钟免费视频| 婷婷91| 78p欧美| 欧洲亚洲人人爽爽视频| 精品中文字幕一区二区l - 百度| 人人爱操| 日本久久综合| 青青草国产欧美非洲黑人| 国产精品午夜福利亚洲综合网| 乱伦av.com| 日夜啪电影| 任你干在线视频| 91亚洲人| aaa一级黄片| 神马久久久久眼| 大白逼三四级| 2018天天干在线视频| 五月丁香综合| 欧美91丝袜| 七月婷婷综合| www.yw尤物| 欧美 亚洲 另类 综合| 亚洲欧美97√| 男人天堂2019亚洲| 天天爱天天操| 五月婷婷激情网| 物业黑人 AV一区| 日本高清免费一本视频在线观看| 青青草日韩无码| 91欧美另类| 久久久久久久精| 大香蕉五月天婷婷| 久久是精品| 91国产操逼视频| 嗯嗯啊中文字幕| 欧美在线视频观看一二三四区高清| 天天肏天天干| 九九内射在线| 欧美激情1区| 久久综合九九| 亚州男人天堂| 9久超碰| 91综合中文字幕| 亚洲av乱伦色图网站| 极品久久久久久久久久久久久久| 色欲三区| 亚洲黄a三级三级三级看三级| 日韩免费福利在线观看| 久草精品一区| 99操视频| 91狠狠综合网| 久草精品国产蜜臀| 国产中文精品一区二区在线观看| 91激情国产| 中国东北熟女老太婆内谢| 亚洲天堂人人妻| 99久国产精品午夜性色福利| 男生女生啊啊啊啊| 欧美日韩在线国产在线| 色欲久久99精品久久| 亚洲一区二区精品福利| 精品少妇一区二区| juliaann精品熟女一区| 日本羞羞的视频在线播放| 99青青草国产视频| 亚洲系列第一页| 国外91| 蜜乳av首页| 91性网| 亚洲、日韩、综合、另类| 无遮挡又黄又刺激的视频| 日日AV加勒比| 久久久人体| 91被操| 欧美 亚洲 91| 999久久久精品国产| 尤物网站91| 91超碰碰在线| 日日夜夜天天| 成年人三级黄色片视频| 麻豆亚洲AV成人无码久久精品| 日韩精品一二三四| 91三级理论片播放器| 97K超碰在线| 97色97好| 99亚洲天堂| 欧美一区二区三区不卡高清视频| 日韩精品大香蕉伊人在线| 欧亚在线视频| 色在线综合| 久久9999 | 女同性恋一区二区三区精品视频| 看日韩操逼| 男人的天堂99| 97干天天| www.91色综合| 亚洲aV性爱| 可免费观看的av毛片中日美韩| 色爽——AV| 四虎影库国产精品免费| 九九激情网| 日韩精品 视频一区二区| 97超碰超碰| 97超色| 久久天天躁日日躁狠狠躁 | 麻豆国产成人精品| 99久久这里只有精品| 日韩精品黄片免费观看| 亚洲人成网站7777| 色香av| 偷拍片久久| 欧美日韩亚洲高清不卡一区二区三区| 99综合网| 国产视频不卡在线观看| 亚洲成人久久一区二区| 中文日本免费高清| 一级AV性爱| 超碰97护士| 9美女超碰在线免费观看| 亚州色国| 精品成人女人久久| 欧美极品少妇| 极品出轨视频网站| 九九九九精品视频| 后入国产| 91性色| 我想要 啊 啊 啊| 五月天久久人妻| 午夜九九| 91亚洲图片| 校园激情狠狠四射| 9久精品| 激情一区二区| 中文字幕一区二区视频在线观看| 亚洲日韩天堂| 久操精品| 国产精品女生av| 久久精品国内Av熟女高清| 97无码视频在线播放| 色妺妺AⅤ| 九九九国产| 美女久久久久久久久久久| 日韩日韩日韩-国产乱码精品一区二区| 97这里只精品| 日产成人久久| 欧美同性恋 的搜索结果 - 91n| 丝袜天堂网| 女上位精品在线| 97超碰欧美手机在线| 手机av亚洲丝袜美腿日韩第一页二页| 蜜桃臀av一区二区| 天美91| 日韩激情电影中文字幕| 另类 日韩 熟女| 日本免费亚洲欧美| 1956日韩精品| 欧美白嫩女HD| 国产精品高朝久久久久久久| 久九九九九九九九热| 青青草综合在线| 熟妇色99| 成人免费福利网站国产| 插入综合网| 久久內射| 中文字幕一区二区无码成人 | 黄色污污污污污污网站| 夜夜嗨AV蜜臀av| 试看福利| 干B网| 亚洲熟女精品| 久久香蕉网| 天天日日舔舔| 东北操逼| 97超碰人人模人人拍人人| 激情网色| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 久草老司机| 国产精品9999| 色情乱伦AV| 荡小穴在线观看| 成人片视频| 9久久久久| www.91人妻.com| 国产精品大香蕉| 超碰色中文| 婷婷九月国产| 日韩性爱啪啪视频| 99热思思| 欧美日日人人天天| 国产成年精品高清在线观看91| 日韩无码专区| 色www精品视频在线观看| 国内一级精品| 在线观看黄色电话| 另类视频在线| 亚瑟国产精品久久无码| 3571色综合一区二区二区| 亚洲综合骚逼| 三级精品三级在线观看| 国产一区二区三区不卡手机在线| 96超碰网| 99这里只有精品| 一区二区播放| 亚洲免费成人精品电影| 欧美少妇高潮久久91| 嗯嗯啊啊好爽| 久久综合九九| 九九热av| 久热无码| 国产91美女视频| 国产av美女被艹的乱叫| 粉嫩久久久极品| 乱伦图一区| 精品国产久热在线观看| 99少妇| 久久精品国产免费观看99| 成人亚欧免费视频| 欧美熟女丝袜| 婷婷在线视频在线观看| 少妇国产不卡| 另类亚洲一区二区三区| 亚洲国产精品久久久久婷婷青年| 97视频在线播放| 色情五月丁香| 亚洲高清欧美总合| 五月天伊人| 91欧美www| 国产热RE99久久6国产精品首 | 欧美呦呦性爱| 2025亚洲男人天堂| 性在久久久久久| 欧美丝袜激情| wwwxxx日本爽| 精品一二三区女同| 亚洲 国产 精品一区| 另类视频在线| 久热99| 欧美日韩亚洲天堂| 嗯嗯啊啊啊好舒服| 国产一区二区三三视频| 91少妇通奸网站| 国产小u女在线观看| 亚洲午夜精品久久久中文影院| 国产又操| 精品黄色电影| 欧美高潮在线| 国语av最新自产拍在线观看| 一区二区视频在看| 日韩影片中文字幕一区二区三区| av一区二区三区不卡| 熟女欧美日韩综合婷婷| 色婷婷九月| 91丝袜美女视频| 国产精品久久发布| 日本女优在线视频福利| 91丝袜| 草久久久| 9久综合网| 人人操人人操人人人操| 亚洲女优有码无码高清| 啊啊啊啊啊好大好舒服想要| 噜噜噜无码AV一级一级久久影院| 无码天堂| 日韩二区三四区五区六区在线看| 伊人综合色网| 无码 有码 国产18p| 丰满人妻一区二区三区免费| 曰本91情色| 人妻丝袜无 码视频专区| 欧美性生活男人的天堂| nuu12国产麻豆精品| 国产青一二三| 久草视频分类在线| 亚洲精品官网在线观看| 乱伦熟女论坛| 日韩精品午夜操呦呦不卡影院| 亚洲一二三四区机械| 国模精品娜娜一二三区| 国产精品视频自拍在线| 超碰色图| 亚洲人妻久久久| 久久超碰、| 丁香成人五月天| 性爱视频啪啪啪啪| 2017av无码免费无线播| 精…码一二三区| 操老熟女AV| 亚洲一二三精品久久网| 人人天天欧洲| 婷婷伊人网| 久久五月天婷婷丁香中文字幕| 9Ⅰ老熟女| 欧美日韩系列| 久久是精品| 久久国产对白激情浪潮 | 天天天肏屄欧美| 在线播放中文字幕| 中文字幕一区日韩精| 91快色色色色色| 老熟女乱伦一区| 久久久久久久久久9| 日韩欧美三级| 九九九不卡| 天天影视网色欲色香| 国产青视频| 九久久九精品视频| 蜜臀AV一区二区三区激情综合| 一级黄色影片| 操91| 屌逼麻豆| 99re6久热只有精品6在线直播 | 9999久久久久| 操91| 国产AV线| 久久爱97| 久久中出| 男人女人18禁片免费看网站| 亚洲精品尤物yw在线影院| 人人操,人人插| 午夜视频久久久久一区| 色天使亚洲综合在线观看| www亚洲免费| 精品中文字幕第一页| 午夜.DJ高清在线观看免费7| 欧美一区二区三区蜜桃| 亚欧Av| 99热超碰| 91色黑人少妇| 亚洲男人天堂视频| 色五月av| 亚洲熟女性高潮久久久| 人人色人人操在线| 亚洲免费精品一区| 97 九色| 熟女91网| 亲子敌伦对白在线播放| 欧美强奸乱能| 色噜噜狠狠色综无码久久合欧美| 天堂资源欧美| 蜜桃精品一区二区三区久在线| 日韩BBN| 九色黄站| 亚洲 一区二区 自拍| 人妻22p| 好淫网一二三视区| 亚洲91大片| 99999国产| AⅤ片水多多| 久久九九国产精品| 亚洲丝袜色图| 夜夜嗨一区二区三区直播内容| 又大又大又大又粗爽高潮观看 | 成人5码视频| 五月天激情网图片| 人妻在线大香蕉| 风间由美日韩欧美久久| 久久亚洲国产成人| 色五月大香蕉| 欧洲精品久久| 欧美欧美啪啪视频| 探花激情视频| 欧美日动态视频| 熟女人妻精品一区二区视频 | 久久国产精品91| 9999久久久久| 亚洲日韩在线a不卡99精品| 亚洲成?V人片在线观看福利| 自拍盗摄一区| 天天色欧美| 天堂中文日本在线观看| 亚洲国产一区二区日韩专区| 亚洲中文日韩精品| 交换娇妻呻吟声不停中文字幕| 久久久免费一级黄片| 欧美精品成人亚洲| 91色伦| 一本色道综合久久欧美| 丁香五月性爱| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 亚殴在线| 78m啪啪啪| 亚洲日韩美女中文字幕乱| 一牛影视久久久一区二区三区| 毛片麻豆91糖心精品毛情片| 天天操天天射天天日| 婷婷香蕉欧美在线一区二区三区| 中国熟女91| 国产高清吃奶免费视频网站| 91久久精品国产| 九t超碰| 超碰91在线| 不卡六六在线91| 久久精品欧美一区二区三区不卡| 欧美丝袜激情| 成人av在线播放| 啊啊啊好湿久久| 国产精品美女视频诱惑| 少妇国产不卡| 国产精品久久久啊| 超碰97资源大奶| 天美传媒婬乱| 91 国产丝袜在线放观看| 97免费视频在线| 四虎AV在线观看| 国产一线二线三线av| 99超级碰免费视频| 欧色网址| 欧美 亚洲 制服 精品| 97干色| 欧美熟妇乱码在线一区| 老子午夜伦不卡影院| 天天α片| 玖玖玖玖精品国产剧情| 毛片99-全集电影手机免费观看完整-B029AV | 国产成人久久久精品免费AV| 亚洲欧美综合网 | 国产精品粉嫩福利在线| 色婷婷香蕉| 99久久亚洲精品无码毛片潘甜甜| 情色日播放AV| 免费人成在线观看网站品爱网| 久久久久久久久久久久黄色 | 欧美精品欧美精品系列 | 97se综合| 亚洲,欧美,春色,另类| 国产精品美女视频诱惑| 男人天堂综合| 九九香蕉网| 天天日天天干天天操| 大香伊人在线一区| 午夜男人一级A片7777| 中文字幕一二三| 东北女人| www.婷婷| 精品视频免费在线一区| 97超碰影音| 日韩偷拍色图| 殴美大黄片| 欧美亚洲激情| 久久久久久中文| 九久久九精品视频| 99操逼| 自怕偷自怕亚洲精品| 97久操| 麻豆AV96熟妇人妻| 99久久久99久久91熟女| 亚洲自拍天堂| 91欧美亚洲| 日韩一级二级三级免费看完整版国语版 | 人人妻人人爽一区二区三区| 97AV在线免费观看| 青青爽| 人人看人人摸人人色| 91色人妻| 欧美不在线| 人妻无码一区二区三区久久99| 少妇无码太爽| 伊人五月天| 欧美aaaaaaa| 91免费看一区二区三区| 殴美色网| 婷婷10月天青娱乐| 国产又长又大又粗的视频| 91jk色拍| 精品免费一区二区三区在线亚洲人成 | 亚洲精品一二三四区| 97碰在线视频| 欧日a| 一区二区三区成人高清视频| 成人AV超碰免费在线| 高清孕妇孕交 交| 国产自偷| 亚洲在线综合| 亚洲资源吧| 人妻大香蕉| 亚洲男人综合网| 精品一区二区麻豆| 伊蕉97蜜桃97狠狠综合干| 欧洲免费一区二| 亚洲色图91欧美日韩| 成人日韩欧美| 中文字幕第页| 午夜精品一区二区三区三上悠亚| 亚洲综合色网| 人妻天天夜夜爽一区二区| 五月天婷婷基地| 婷婷99| 五月婷婷激情网| 久久久久久人妻| 发朗少妇买婬全视频中文| 色墦五月丁香| www.狠狠干.coom | 欧美精品欧美精品系列| 欧美图片色五月天| 欧美日本不卡在线| 九九九九热| 亚洲麻豆av一区二区| 日韩性爱啪啪视频| 日韩欧美成人午夜福利| 中国乱伦一区二区| 91五月天| 夜夜高潮夜夜爽高清视频一 | 久久中文字幕女同性恋一区| 午夜操一视频一区| 亚洲精品人体| 老司机深夜18禁污污网站| 日产欧美电影一区二区三区| 小日子操bb在线看| 99久久久无码国产精品性男| 91中文在线| 99久久com免费视频′| 国产视频一区二区三区久久亚洲天堂| 国产天天看| ...日韩成人一区二区三区字幕| 久久9免费视频| 日韩大香蕉| 国产最火爆久久国产网站网站| 波多野结衣先锋影音| 欧美人人AAA| 久7色| 欧美色图 人妻| 青青草原av| 超碰在线人人射| 脫衣舞一区二区三区| 久热91| 国产高清不卡视频| 97操97干| 丁香九月 婷婷| 91久久久久久| 一区二区三区成人| 久久少妇| 免费看欧美美女黄色大片| 啊啊啊啊啊啊啊国| 色777999综合| 少妇高潮流水av免费| 激情视频网址| 国产成人天堂| 免费a v| 破苞ⅩXXX性无码动漫无码| 欧美少妇一区二区三区| 色97欧美| 久久三| 9超碰免费| 97se亚洲综合自| 黄色电影观看久久9| 国产超碰国产97| 国内外毛片在线观看| 亚洲国产成人精品999| 婷婷五月天成人| 91美女視頻| 国产精品久久久久久久电影渣男| 色老汉玖玖爱| 偷偷人人精品女女久久| 免费啪啪一级视频| 婷婷香网站| 国产黄色剧情影片麻豆免费播放| 女人被添高潮免费视频| 日本孕妇孕交| 日本三级一区二区 在线| 啊a一区在线| 夜夜欢天天干| 啪啪啪大香蕉| 三四中文字幕| 狠狠干婷婷| 自拍啪啪视频| 国产女人91精品嗷嗷嗷嗷| 成人久久精品| 亚洲熟女性高潮久久久| 午夜精品久久久久久久99热影院| 国产综合日韩伦理| 亚洲国产一区二区三区在线| 啊啊嗯嗯好爽| 丝袜夫妻自拍| 97碰| 久操操| 性爱视频无打码在线观看| 草久久久| 日韩av不卡在线看| 亚洲色图综合网| 淫荡少妇免费| 91老熟女91老女人| 韩国黄色片精品久久久| 黑人性暴力毛片| 操碰97| 青青草中文字幕| 黄色乱论网站| 久久久久久人妻一区精品色欧美| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 啊啊啊好多水| 天天日日本| 一二三四视频中文字幕在线看| 1204金沙人妻懂旧版免费| 精品少妇人妻av久久免费| 亚洲有码第一页| 国产精品老师| 天天伊人| 欧美一二在线| 高跟丝袜AV专区国产| 精品丰满熟妇人妻一区| 97天天摸天天碰| 国产精品4p在线观看| 日韩视频小说在线观看| 人妻乱仑一区二区三区| 欧美日韩欧美| 天天爽夜夜欢视| 国产精品无码av在线 | 国产18精品亚洲精品| 欧美情色亚洲| 97在线欧洲| 一区三区啪啪| 超碰色综合| 人人爽人人精品乱人伦AV| 欧美人人AAA| 亚洲国产另类在线中文| 亚洲熟久久| 婷婷五月花| 天天操人人操狠狠插| 99热在线只有精品| 在线97在线| 99九九久久| 9国产超碰| 大香蕉一人| 久久久久久91香蕉国产| 操逼网免费无码视频| 精品九九| 蜜汁欧美| 亚洲网污污污污| 精品久久久九九九孕妇| 69精品久久久久中文字幕| 色牛aV| 日韩欧美麻豆 | 插入粉嫩少妇视频| 嗯嗯嗯啊啊啊操的我好爽| 亚洲 欧美 手机在线观看| 男女无套 免费网站| yazhouzaixian| 久久久18禁| 精品国产少妇高潮视频| 人妻少妇av在线观看| 91成人高清在线观看| 搡老女人老熟女91老熟女综合网| 超碰97在线中文| 午夜天堂精品久久| 91neishe| 成人日韩欧美| 国产尹人在线视频免费| 一级黄色视频网| TS人妖另类精品视频系列| 超碰97久| 精品少妇一区二区三区| 天综合网欧美| 亚洲少妇色图自慰直播| 91天天日| 高凊专区人人操| 猛交交| 99激情视频| 国模精品娜娜一二三区 | 超碰97综合网| 97欧美久久久久久久| 日本99一区二区| 夜夜狠狠躁日日躁色视频| 国产原创精品| 岛国小电影| 久久精品亚洲婷婷| 黄页18禁| 少妇被玩视频二三区| 色综合一区二区三巨| 日本在线一二| 后X久久| 日韩丝袜人妻AV| 在线啊啊啊啊| 久久一区,青青青青草视频在线播放| 色色色色色色色色色色色色色色综合 | 精品无码人妻一区二区免费蜜桃| 亚洲欧洲无码97久久精品| 在线综合 亚洲 欧美中文字幕| 一二三啪啪专区| 69综合网| 欧美午夜视频| 香蕉大久久久| 青青久日| 亚洲欧美情色| 日韩av在线精品观看| 日本黄大片在线观看视频| AV麻豆免费一区| 亚洲 日本 国产 综合| 在线欧美69V免费观看视频| 久草免费福利在线播放| 92人人操人人| 夂久色| 精品人妻一区二区免费蜜桃| 嗯嗯啊啊好疼| 亚洲精品蜜桃久久久| 久久久久久久9| 精品亚洲成人免费在线| 国产一区在线观看无码AV| 欧日a| 欧美性猛交美女自慰91| 丝袜综合| 久久中文字幕人妻熟av女蜜柚| 国产AV人人夜夜澡人人爽麻豆| 日本日逼高清| 99蜜桃臀久久久欧美精品网站| 操逼国产免费| 日韩成人性爱电影在线播放| www久久久| 日日日啊啊啊| 9999久久久久| 清纯唯美亚洲| 免费在线黄片视频| 亚洲麻豆精品二区三区| 人人妻人人色| 99国产女人| 在线无码视频| 人妻嗯啊啊在线播放| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | k频道色撸撸| 久久久无码视频| 强奸乱伦大香蕉| 国产精品一区人妻精品阁在线| 国产在线精品电影观看| 久久 精品| 唐山老熟妇露脸啪啪叫| 4141514逼喷水三级片| 91在线丝袜| 日B操| 激情丁香婷婷| 天天内射| 日韩三级在线观看网站| 色婷婷丁香五月| 少妇色综合| 国产精品成久久久久午夜午夜| 国产自偷自拍一区| 最新精品久久蜜桃 | 青青青国产| 日韩精品人妻中文字幕不卡乱码| 人人操人人操人人人操| 91在线欧色| 夜夜夜爽www精品视频| 又大又长又粗又爽又黄| 黄色乱论网站| 777超碰| 国产一区二区啪啪视频| www.男人天堂| 亚洲字幕一区二区| 国产白领连续中出在线观看| 97干在线视频| 婷婷五月色| 亚州五月| 国产女人91精品嗷嗷嗷嗷| 欧美夜夜骑视频| 被窝影院午夜看片无码| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 蜜臀网 一区| 国产精品久久伊人| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 啊啊啊啊二区好大| 国产精品露脸在线观看| 中文字幕在在线观看网站| 美女诱惑一区| 九九热精品免费视频| 78久久| 精品四五区| 欧美色网| 色老汉色| 超碰色男人操熟女| 乱久久久| 小情侣高清国产在线视频| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 欧美精品另类人妖xxxx| 97免费在线观看| 欧洲天天在线| 精品人妻中文字幕高清| 欧美日日夜夜| 亚洲男人久久综合天堂| 色色色色色色色色综合| 欧美三级中文字幕hd| 日韩欧美中文字亚洲慕| 99性视频| 97aiaiai| 九一精品牛牛一区二区| 亚欧成人中文字幕一区| 欧美性少妇| 天天舔天天| 白丝被操91| 99热日| 天天干美少妇一区| 干我久操| 91操人| 亚洲天堂久久| 亚欧免费观看视频| 日韩天天本| 国产成人+综合亚洲+天堂| 中文字幕99999| 新97国产超碰| 91色婷婷综合久久中文字幕二区| 黄骗免费网站| 极品后入免费视频| 热九九精品| 成年人网站在线免费观看| 久久久精品一区二区| 美日韩成人| 日韩欧美大片免费高清啪啪| 人妻黑丝袜电影| 先锋精品av色鲁| 久久久久久久伊人精品| chaopen97久久| 91黑丝少妇| 日韩欧美字幕亚洲一区二区| 综合另类| 久久人妻一区二区三区高清| 91neishe| 睡产熟女乱伦| 日本黄大片在线观看视频| 中文字幕色AV| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 蜜臀久久99'精品久久久| 精品久久久久久亚洲| 国产精品久久久久无码A√| 国产精品成人午夜福利| 涩涩久久精品| 日韩欧亚太美不卡| 超碰在线看| 日韩激情啪啪啪| 夜夜爽夜夜爽| 日韩欧美麻豆| 成人黄页| 一区,二区,三区网站| 97人人模人人爽人人| 久久久久亚洲av综合波多野制衣| 91人人| 国产怡红院在线| 国产第二页| 久久111| 啊啊啊啊啊啊啊国| 婷婷五月天成人网| 欧亚性爱视频免费看| 9丨亚洲一区二区在线| 日本道不卡| 亚洲人妻爽爽爽| 亚洲在线A| 91青青在线视频| 人人搡人人肉久久精品| 中文字幕加勒比海高清无码免费视频 | 亚洲综合图文| 久久9久9久99久9久9| 嗯啊不要在线观看嗯啊| 午夜色婷婷| 无色无码| 97人人操人人摸人人爱| 欧美性生活免费网| 影音先锋日本一区二区| 国产精品久久久吖| 亚洲综合91| 91精片| 97免费在线| 欧美双插| 啊啊啊啊啊好多水| 久久系列| 综合色一区三区二区| 超碰色97| 成人怡红院| 啊啊啊啊网站| 超碰欧美| 亚洲无码国产探花在线观看| 欧美岛国精品在线观看| 国产婷婷综合在线观看| 丝袜人妻av一区二区| 你懂的在线观看区国产 | 操一区| 丝袜美腿射精91| 激情四射婷婷六月天| 亚洲男人天堂视频| 久久久无码精品人妻二区| 欧美熟妇色| 国产精品香蕉| 精品亚洲成人免费在线| 成人日韩3| 亚洲一区二区中文字幕| 中文字幕jul-617人妻熟女| 中文字幕在线免费观看视频| 亚洲五月天激情| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 麻豆国产97在线| AV天堂国产| 国产一级作爱毛片| AV九九| 亚洲情色一区综合| 加勒比伊人综合| 小电影欧美91| 综合另类| 2019天天干天天操| 99热91| 亚洲欧美日韩有码| 精品一区二区久久| 91高潮| 乱伦一区二区三区‘| 黄网色一区二区三区四区精品| 九九AV| 亚洲免费97免费| 成人情色综合网| 伊人影院日本| 亚欧Av| 丝袜制服字幕在线| 久久久91福利姬| 天天草天天日| 黑人精品成人一区二区三区| 婷婷色一区| 青青草久草AV| 好属操| 国产精品成人无码av无码免费| 综合色图亚洲欧美| 色综合99999| 狠狠91| 欧美网站免费| 三上制服丝AV| 99re这里只有| 久久av成人无码免费| 在线观看一卡二卡| 丝袜狠狠草尤物 91| 男人天堂电影院| 国产又粗又长又爽又色| 中文字幕日韩精品一区二区三区| 日本不卡中文| 欧美一级特黄淫片在线观看| 女优免费一区二区永久| 久久综合久色欧美综合狠狠| 久久精品国产亚洲AV先锋| 国语av最新自产拍在线观看| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 91日日夜夜| 精品久久无码午夜福利| 五月婷婷六月激情| 久草久日| 亚洲一曲日韩精品| 日韩av三四区| 国产精品扒开腿做爽爽爽视频| 国产成人精品日本视频| 乱老熟女一区二区三区| 91狠狠综合| 人妻久久久久久久久久久久久久久| 精品一区二区久久| 国产成年精品高清在线观看91| 久久久久久久久久久久久久久性生活视频 | 亚洲Av诱惑| 国产女性无套 免费观看| 桃色人妻在线视频| 国产高清吃奶免费视频网站| 老熟女91av| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 无码不卡八戒| 亚洲欧美一区二区三区在钱蜜桃 | 亚洲操操| 色亚洲欧美| 欧美在线干| 蜜桃臀av一区二区| 亚洲九区| 亚洲情色 自拍| 熟女突然公开看18禁影片 | 伊人五月天激情| 伊人伊人LD| 脫衣舞一区二区三区| 91精品国久久久久久无码| 国产日逼视频| 人妻少妇精品久久久| 亚洲熟女性高潮久久久| 韩日巨乳美女免费视频在线观看| 尤物黄色在线观看网站| 啊啊啊啊操死我了| 18禁免费视频| 亚洲自拍欧美色综合| 久久激情亚洲精品无码?V| 天天操天天7| 久久香蕉国产线看观看猫咪av| 呻吟 欧美 日本 中出| 亚洲色图欧美视频| 97在线公开视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久精品日韩| 青青草久久| 日韩婷婷| 国产精品 视频| 精品人妻一区二区乱码一区二区| 成人七区| 校园春色美腿丝袜 | 亚州性9| 亚洲人在线成线成人| 国产最火爆久久国产网站网站| 国产十八禁视频| 日韩AC| 欧美色图20p| 日韩中文字幕av在线播放| 顶级丝袜熟女一区二区三区| 校园春色美腿丝袜| 混色激情av| 亚洲视频1区| 999久久芭蕾| 狠狠躁AV| 午夜120视频在线观看| 国产嫩草精品A88AV| 欧美亚洲激情小说| 国产精品黄色三级av| 青青草原香蕉日本Ap| 视频在线观看一二三区| 色网在线视频观看免费| 综合亚洲网| 爱爱动态试试看6 0秒| 天天操天天舔| 日本操逼无码| AV男人天堂网| 尻女朋友一夜| 粉嫩av在线一区二区| 天美传媒精品一区二区| 强奸熟女一区二区三区| 伊人激情| 探花一区二区三| 91第一页| 日本久久999| 97在线国产精品| 曰韩成人免费视频| 男女做爰猛烈动高潮A片免费应用| 欧美成人国产精品| 暖暖精品二区三区观看| 丰满人妻大屁一区二区| 一级片视频啪啪| 狠狠色五月亚洲91| 97在线观看免费视频l| 伊人97超碰| 亚洲偷拍自拍在线视频| 婷婷干黄色| 亚洲风情在线观看| 欧美性视频二区三区| 国产人伦精品一区二区三区 | 欧美成不卡网| 99热色精品| 久久精品中文字幕无码l| 精品综合久久久久久五月天| 黄久久| 伊人 俄罗斯 a v| 亚洲男人的天堂一区二区| 97婷婷色| 久久久免费一级黄片| 久久受www免费人成| 国产精品福利视频| 日本久久久久久久久久| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 色97综合中文字幕| 日本精品免费一区二区三区四区| 97WW精品| 九九综合| 91麻豆va国产精品| 亚州操逼图| 欧美日韩色综合网| av爱爱爱| 亚洲阿v天堂在线| 亚洲欧美黄| 人人妻人人爽一区二区三区| 大香蕉日韩欧美| 中文字幕免费看| 天天超级碰碰碰| 美女黑人91神马| www.高清无码诱惑一区.com | 四虎国产精品永久地址入口| 亚洲日韩精品久久久久一区壹牛 | 精品无码一区二区| 啊啊啊啊啊啊啊国| 91久精品| 欧美中文字幕男人天堂久久精品| 久久乐| 五月黑AⅤ| 久久久影院| 久久久久久性爱视频| 亚洲欧美天堂在线| 午夜呻吟欧美| 91精品人妻一区二区三区蜜桃臀| 四虎永久在线精品免费网址| 天堂av2019| 欧美日日夜夜| 久久国产对白激情浪潮| 欧美72网页| 欧美一区二区三区黄色影视| 天天草AV| 色欧美在线| 亚洲久久久久| 精品日韩人妻视频| 亚欧性爱无码| aⅴ日韩成人电影av在线免费看av大全 |