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

ARTICLE DETAIL

資訊詳情

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

TMS XData 讓 Delphi 12.3 快速暴露實(shí)體為 REST API

TMS XData 讓 Delphi 12.3 快速暴露實(shí)體為 REST API 簡(jiǎn)介面向Delphi 12.3開(kāi)發(fā)者的TMS XData v5.21.0.0控件包是一套基于REST架構(gòu)的數(shù)據(jù)訪(fǎng)問(wèn)框架用于快速構(gòu)建可提供增刪改查接口的服務(wù)端應(yīng)用解決網(wǎng)絡(luò)服務(wù)開(kāi)發(fā)中架構(gòu)選型與組件集成的常見(jiàn)痛點(diǎn)。壓縮包為7z格式體積僅3.2MB共582個(gè)文件包含249個(gè)pas源代碼、33個(gè)dpr工程文件和29個(gè)dpk包文件用于編譯安裝76個(gè)dfm窗體布局文件37個(gè)html說(shuō)明頁(yè)面及chm編譯幫助另有css/js等前端資源與少量pdf/txt說(shuō)明。整體并非僅僅是庫(kù)文件而是完整的組件工程與文檔集合。目前已有67人學(xué)習(xí)下載對(duì)于正在選型或準(zhǔn)備上手TMS XData的Delphi開(kāi)發(fā)者具有直接參考價(jià)值。通過(guò)249個(gè)pas源碼可深入理解組件內(nèi)部實(shí)現(xiàn)借助dpr/dpk示例工程和chm幫助手冊(cè)能快速建立RESTful服務(wù)支持JSON/XML數(shù)據(jù)交換包內(nèi)html/css/js等Web資源可用于前端聯(lián)調(diào)配合dfm窗體布局文件可降低界面與接口的對(duì)接成本。無(wú)論初學(xué)者還是資深Delphi程序員都能減少底層網(wǎng)絡(luò)通信的重復(fù)勞動(dòng)更專(zhuān)注于業(yè)務(wù)邏輯顯著縮短數(shù)據(jù)服務(wù)開(kāi)發(fā)周期。1. TMS XData v5.21.0.0在 Delphi 12.3 里讓業(yè)務(wù)模型直接長(zhǎng)出 REST API 的控件做 Delphi 后端的人應(yīng)該都碰過(guò)這種局面Aurelius 實(shí)體已經(jīng)寫(xiě)好了數(shù)據(jù)庫(kù)表也定完了但前端要調(diào)一個(gè)GET /customers還得單獨(dú)搭一套 HTTP 服務(wù)寫(xiě)路由、寫(xiě) JSON 序列化、寫(xiě)鑒權(quán)折騰半天。TMS XData v5.21.0.0 就是專(zhuān)門(mén)解決這個(gè)重復(fù)勞動(dòng)的控件集它基于 Delphi 12.3 編譯鏈直接把 Aurelius ORM 實(shí)體暴露成標(biāo)準(zhǔn) REST/JSON 資源自動(dòng)生成 CRUD 端點(diǎn)順帶把 JWT 鑒權(quán)、CORS、日志這些服務(wù)端基礎(chǔ)設(shè)施也放進(jìn)組件里。適合已經(jīng)用 Delphi 做業(yè)務(wù)系統(tǒng)、需要把數(shù)據(jù)開(kāi)放給 Web/H5/移動(dòng)端復(fù)用的團(tuán)隊(duì)也適合想在不換技術(shù)棧的前提下做輕量中臺(tái)的場(chǎng)景。2. 環(huán)境與安裝先讓 Delphi 12.3 認(rèn)識(shí) TMS XData v5.21.0.02.1 版本匹配為什么是 v5.21.0.0 而不是手寫(xiě) HTTP 服務(wù)先說(shuō)結(jié)論TMS XData v5.21.0.0 這份資源是按 Delphi 12.3 Athens 編譯的項(xiàng)目的源碼路徑、BPL 包名、設(shè)計(jì)期注冊(cè)邏輯都對(duì)齊了這一代 IDE。如果你還在用 Delphi 10.3 或 11直接裝大概率會(huì)報(bào)DCU版本不匹配或者找不到System.Net的某個(gè)類(lèi)型這不是資源有問(wèn)題而是編譯工具鏈不匹配后面避坑部分會(huì)詳細(xì)說(shuō)。那為什么不手寫(xiě)一個(gè) WebBroker 服務(wù)我早年也這么干過(guò)在TWebModule里自己解析Request.PathInfo、手寫(xiě)Response.Content再處理 URL 編碼和日期格式。短期內(nèi)接口少還能扛一旦實(shí)體超過(guò)十個(gè)每個(gè)實(shí)體都要寫(xiě) CRUD 路由、參數(shù)校驗(yàn)、分頁(yè)、排序代碼量翻著倍走而且所有接口的 JSON 格式靠人肉保證前端稍微挑點(diǎn)格式問(wèn)題就得來(lái)回返工。XData 在這個(gè)場(chǎng)景下更像一個(gè)資源映射器實(shí)體類(lèi)就是 API 資源屬性就是字段路由、序列化、HTTP 方法映射全部自動(dòng)完成。2.2 安裝步驟解壓、加庫(kù)路徑、編譯安裝拿到的是 .7z 壓縮包不是 installer所以安裝要做幾步手工操作但每一步都可控。先把壓縮包釋放到一個(gè)不帶空格的目錄我的習(xí)慣是放D:\Libs\tms\xdata_521不建議丟到系統(tǒng)盤(pán)或者帶中文名的路徑Delphi 的庫(kù)路徑對(duì)中文路徑支持一直不太穩(wěn)定。接下來(lái)打開(kāi) Delphi 12.3做三件事步驟操作說(shuō)明1Tools Options Environment Variables里新增變量變量名TMS_XDATA指向解壓根目錄后續(xù)庫(kù)路徑可以直接引用2Tools Options Delphi Options Library Library Path追加源碼路徑把$(TMS_XDATA)\source或?qū)?yīng)版本目錄加進(jìn)去讓 IDE 能索引到單元文件3打開(kāi)包工程組并順序編譯在packages目錄下找到 Delphi 12 對(duì)應(yīng)的.groupproj先編譯運(yùn)行時(shí)包.dpk再編譯設(shè)計(jì)期包并右鍵Install注意第三步的順序很關(guān)鍵XData 的運(yùn)行時(shí)包依賴(lài) Aurelius 的運(yùn)行時(shí)包如果直接把設(shè)計(jì)期包拿去 Install會(huì)因?yàn)檎也坏降讓?DCU 報(bào)錯(cuò)。正確順序是從下往上編譯先Aurelius再XData核心最后才是設(shè)計(jì)期注冊(cè)包。看到Design package installed的提示并且 Tool Palette 里出現(xiàn)TMS XData分類(lèi)就說(shuō)明裝上了。2.3 驗(yàn)證安裝用自帶 Demo 建立第一個(gè)服務(wù)器XData 安裝包通常會(huì)帶示例工程路徑一般在demos或samples目錄下。優(yōu)先找名字帶WebModule或者Server的示例打開(kāi)后編譯運(yùn)行瀏覽器訪(fǎng)問(wèn)http://localhost:8080/tms/xdata/info如果返回一段 JSON列出 XData 版本號(hào)和服務(wù)狀態(tài)就說(shuō)明整條鏈路是通的。這里有個(gè)關(guān)鍵的驗(yàn)證點(diǎn)/tms/xdata是 XData 的默認(rèn)根路徑后面跟的info是框架自帶的服務(wù)信息接口。如果瀏覽器訪(fǎng)問(wèn)能看到類(lèi)似product : TMS XData的字段說(shuō)明不僅是組件裝好了連接池和請(qǐng)求分發(fā)也正常。如果這一步就 404優(yōu)先查端口是不是被別的服務(wù)占了再查 WebModule 有沒(méi)有被正確加載。3. 模型先行用 Aurelius 實(shí)體把數(shù)據(jù)表變成 REST 資源3.1 數(shù)據(jù)模型即 APIXData 如何做映射XData 的核心設(shè)計(jì)理念是模型即接口它不做獨(dú)立的接口編排層而是直接讀取 Aurelius 實(shí)體的元數(shù)據(jù)。實(shí)體類(lèi)上的[Entity]、屬性上的[Column]這些注解在運(yùn)行期被 XData 翻譯成資源的名稱(chēng)、字段的 JSON 鍵名和類(lèi)型。也就是說(shuō)你寫(xiě)實(shí)體類(lèi)的時(shí)候接口文檔其實(shí)已經(jīng)同步確定了。這意味著兩件事第一字段名、類(lèi)型、是否可空都會(huì)直接影響 API 表現(xiàn)設(shè)計(jì)實(shí)體類(lèi)時(shí)要站在前端視角想這個(gè)字段能不能為 null、應(yīng)該返回字符串還是整數(shù)第二XData 端點(diǎn)的資源名默認(rèn)是實(shí)體類(lèi)名的復(fù)數(shù)形式比如TCustomer對(duì)應(yīng)的資源路徑就是/customers如果你在代碼里寫(xiě)的是TUserInfo那路徑就是/userInfo大小寫(xiě)和復(fù)數(shù)化規(guī)則要心里有數(shù)否則前端按文檔調(diào)不到。3.2 寫(xiě)一個(gè) TCustomer 實(shí)體注解、主鍵與默認(rèn)命名下面是最小可運(yùn)行的實(shí)體定義以客戶(hù)表為例unit uCustomer; interface uses Aurelius.Mapping.Attributes; type [Entity] [Table(Customers)] TCustomer class private [Column(Id, [TColumnProp.Identity])] FId: Integer; [Column(Name, [])] FName: string; [Column(Email, [])] FEmail: string; public property Id: Integer read FId write FId; property Name: string read FName write FName; property Email: string read FEmail write FEmail; end; implementation end.這段代碼里有兩個(gè)容易忽略的參數(shù)TColumnProp.Identity表示主鍵自增XData 在生成POST /customers接口時(shí)會(huì)認(rèn)為不需要客戶(hù)端傳入 Id而PUT /customers(1)則會(huì)要求 URL 里的(1)與實(shí)體主鍵匹配。如果主鍵屬性沒(méi)標(biāo)Identity創(chuàng)建資源的接口就要求你在 JSON Body 里顯式傳主鍵行為完全不同。3.3 多表和關(guān)聯(lián)關(guān)系Master-Detail 資源怎么暴露實(shí)際業(yè)務(wù)很少只有單表XData 對(duì)關(guān)聯(lián)關(guān)系的處理是實(shí)體屬性直接引用另一個(gè)實(shí)體類(lèi)JSON 序列化時(shí)會(huì)輸出嵌套對(duì)象。舉個(gè)例子訂單和客戶(hù)的關(guān)系type [Entity] [Table(Orders)] TOrder class private [Column(Id, [TColumnProp.Identity])] FId: Integer; [Column(CustomerId, [])] FCustomerId: Integer; [Column(TotalAmount, [])] FTotalAmount: Double; FCustomer: TCustomer; public property Id: Integer read FId write FId; property CustomerId: Integer read FCustomerId write FCustomerId; property TotalAmount: Double read FTotalAmount write FTotalAmount; [Association([TAssociationProp.LazyLoading])] property Customer: TCustomer read FCustomer write FCustomer; end;注意Association注解上的LazyLoading參數(shù)。我一般會(huì)默認(rèn)打開(kāi)懶加載這樣查詢(xún)訂單列表時(shí)不會(huì)把每個(gè)訂單的客戶(hù)對(duì)象都帶出來(lái)JSON 體積會(huì)小很多。前端需要客戶(hù)詳情時(shí)再單獨(dú)調(diào)/customers(2)取數(shù)據(jù)這也是 REST 接口更合理的使用方式。如果不加懶加載訂單量大時(shí)響應(yīng)會(huì)明顯變慢這是新手最容易踩的坑。4. 把 CRUD 暴露成 APIXData 端點(diǎn)、篩選參數(shù)和自定義業(yè)務(wù)方法4.1 自動(dòng) CRUD 端點(diǎn)GET/POST/PUT/DELETE 映射規(guī)則實(shí)體類(lèi)編譯進(jìn)去之后XData 會(huì)自動(dòng)注冊(cè)一套標(biāo)準(zhǔn)端點(diǎn)映射關(guān)系非常直觀HTTP 方法URL 示例行為GET/customers返回客戶(hù)列表默認(rèn)分頁(yè) 100 條GET/customers(15)返回單條記錄主鍵為 15POST/customers創(chuàng)建記錄Body 放 JSON 對(duì)象PUT/customers(15)整體更新記錄 15DELETE/customers(15)刪除記錄 15這套映射不需要寫(xiě)一行路由代碼。需要留意的坑是 URL 里主鍵的括號(hào)寫(xiě)法是 OData 風(fēng)格不是常見(jiàn)的/customers/15前端如果按路徑參數(shù)的習(xí)慣拼接就會(huì) 404。我一般會(huì)在接口文檔里顯式告訴前端這個(gè)規(guī)則順手在 WebModule 的響應(yīng)頭里加上X-XData-EntitySet: customers之類(lèi)的自定義頭方便排查問(wèn)題。4.2 分頁(yè)、篩選與排序$top/$skip/$filter 的實(shí)際用法XData 對(duì)列表接口默認(rèn)支持一組查詢(xún)前綴參數(shù)這是它區(qū)別于一個(gè)實(shí)體一個(gè)固定接口的另一個(gè)優(yōu)點(diǎn)??匆粋€(gè)實(shí)際請(qǐng)求GET /tms/xdata/customers?$top20$skip40$filterTotalAmount gt 1000$orderbyName desc參數(shù)含義拆開(kāi)說(shuō)$top20只取前 20 條等價(jià)于 SQL 里的LIMIT 20。$skip40跳過(guò)前 40 條和$top配合做分頁(yè)。前端常見(jiàn)的第 3 頁(yè)每頁(yè) 20 條就是$skip40$top20。$filterTotalAmount gt 1000是服務(wù)端過(guò)濾gt是大于的意思XData 會(huì)把它翻譯成 SQL 的 WHERE 條件不會(huì)出現(xiàn)查出全量再在內(nèi)存里過(guò)濾這種災(zāi)難。$orderbyName desc指定排序字段和方向多個(gè)字段用逗號(hào)分隔。這套參數(shù)是可以疊加的但要注意$filter的字段名必須和 JSON 序列化后的字段名一致。如果你在實(shí)體屬性上用了[Column(full_name)]但屬性名是FName那 URL 里應(yīng)該寫(xiě)full_name還是Name以 JSON 鍵名為準(zhǔn)這個(gè)細(xì)節(jié)在聯(lián)調(diào)前先確認(rèn)一次能省半天排查時(shí)間。4.3 自定義業(yè)務(wù)方法在服務(wù)類(lèi)上開(kāi)新的路由自動(dòng) CRUD 覆蓋的是標(biāo)準(zhǔn)增刪改查但業(yè)務(wù)里總有查詢(xún)某用戶(hù)最近十筆訂單這種聚合邏輯。XData 允許在服務(wù)器端注冊(cè)服務(wù)類(lèi)把方法暴露成額外端點(diǎn)。我常用的做法是在獨(dú)立的單元里定義服務(wù)接口不寫(xiě)進(jìn)實(shí)體類(lèi)type TCustomerService class public function GetRecentOrders(CustomerId: Integer; Count: Integer 10): TListTOrder; end;服務(wù)器啟動(dòng)時(shí)把它注冊(cè)進(jìn) XData 的服務(wù)集合里前端就可以直接請(qǐng)求GET /tms/xdata/Service/GetRecentOrders?CustomerId5Count10這個(gè)路徑的規(guī)則是Service固定后面跟著類(lèi)名和方法名參數(shù)走查詢(xún)字符串。好處是業(yè)務(wù)邏輯留在 Delphi 端可以繼續(xù)用 Aurelius 的查詢(xún)語(yǔ)法、事務(wù)和連接池不用為了一個(gè)聚合查詢(xún)?nèi)?xiě)裸 SQL。我建議自定義服務(wù)方法統(tǒng)一走這種模式而不是另開(kāi)一個(gè) HTTP 端口。4.4 客戶(hù)端調(diào)用用原生 RESTClient 做最小聯(lián)調(diào)雖然 TMS 提供了官方的 XData Client 組件但我聯(lián)調(diào)時(shí)更習(xí)慣先用 Delphi 自帶的TNetHTTPClient把接口調(diào)通少一層依賴(lài)出了問(wèn)題也好判斷是服務(wù)端還是客戶(hù)端的事uses System.Net.HttpClient, System.JSON; var HttpClient: TNetHTTPClient; Response: IHTTPResponse; JSONValue: TJSONValue; begin HttpClient : TNetHTTPClient.Create(nil); try Response : HttpClient.Get(http://localhost:8080/tms/xdata/customers?$top10); if Response.StatusCode 200 then begin JSONValue : TJSONObject.ParseJSONValue(Response.ContentAsString(TEncoding.UTF8)); try // JSONValue 里就是客戶(hù)列表數(shù)組 WriteLn(JSONValue.ToString); finally JSONValue.Free; end; end; finally HttpClient.Free; end; end;TNetHTTPClient.Get返回的IHTTPResponse里包含狀態(tài)碼、響應(yīng)頭和 Body狀態(tài)碼 200 是正常401 是鑒權(quán)失敗404 多半是資源名和實(shí)體名沒(méi)對(duì)上。這里用TJSONObject.ParseJSONValue解析響應(yīng)不引入額外的 JSON 庫(kù)聯(lián)調(diào)階段夠用了。5. 避坑與排查XData 部署中常見(jiàn)的七個(gè)翻車(chē)現(xiàn)場(chǎng)5.1 安裝后 IDE 里找不到 XData 組件面板現(xiàn)象按步驟編譯了設(shè)計(jì)期包Install 也提示成功但 Tool Palette 里搜不到TMS XData。原因有兩個(gè)一是庫(kù)路徑里源碼目錄順序不對(duì)IDE 索引到了舊版本的 DCU二是安裝了很多第三方組件組件包分類(lèi)被折疊了。解決在 Tool Palette 右上角搜索框里直接輸入TXDataServer如果搜不到回到Components Install Packages里確認(rèn)設(shè)計(jì)期包名字前打了勾再把庫(kù)路徑里舊版路徑刪掉重啟 IDE。5.2 GET 請(qǐng)求返回 500服務(wù)端日志卻一片空白現(xiàn)象瀏覽器訪(fǎng)問(wèn)/customers返回 500 Internal Server ErrorWebModule 的 OnLog 事件什么都沒(méi)打。原因通常是實(shí)體類(lèi)的屬性映射問(wèn)題比如數(shù)據(jù)庫(kù)表里沒(méi)有Name列但實(shí)體里寫(xiě)了Name這個(gè)錯(cuò)誤在 XData 生成查詢(xún)語(yǔ)句時(shí)才拋出而異常被框架吞進(jìn)了默認(rèn)日志通道。解決先在瀏覽器訪(fǎng)問(wèn)/tms/xdata/info確認(rèn)服務(wù)正常再直接調(diào)用/customers(1)縮小范圍最后檢查實(shí)體類(lèi)映射和數(shù)據(jù)庫(kù)字段是否一一對(duì)應(yīng)。5.3 JSON 日期時(shí)間格式和前端預(yù)期不一致現(xiàn)象前端拿到的是2024-05-12T08:30:00.000Z但頁(yè)面顯示時(shí)多了 8 小時(shí)。原因Delphi 的TDateTime本身沒(méi)有時(shí)區(qū)概念XData 序列化時(shí)按服務(wù)器本地時(shí)間輸出而前端 JavaScript 的new Date()默認(rèn)按瀏覽器時(shí)區(qū)渲染。解決在服務(wù)器端統(tǒng)一定義時(shí)間基準(zhǔn)我一般會(huì)在部署文檔里約定所有接口返回 UTC 時(shí)間前端拿到后再轉(zhuǎn)當(dāng)?shù)貢r(shí)間。如果是內(nèi)部系統(tǒng)不想改邏輯就在前端解析時(shí)忽略時(shí)區(qū)字段按純字符串處理。5.4 SQLite 并發(fā)請(qǐng)求時(shí)頻繁報(bào)database is locked現(xiàn)象請(qǐng)求量稍微上來(lái)SQLite 為后端的服務(wù)就開(kāi)始間歇性 500。原因SQLite 默認(rèn)單連接串行寫(xiě)XData 的連接池在并發(fā)寫(xiě)場(chǎng)景下會(huì)同時(shí)打開(kāi)多個(gè)連接其中一個(gè)拿到鎖其他就排隊(duì)失敗。解決SQLite 適合接口量小、并發(fā)低的內(nèi)部工具如果要做多用戶(hù)在線(xiàn)服務(wù)把數(shù)據(jù)庫(kù)切到 MySQL/SQL Server連接字符串改一下應(yīng)用代碼不用動(dòng)。這個(gè)項(xiàng)目里如果已經(jīng)踩了 SQLite 的坑別猶豫趁早換庫(kù)。5.5 CORS 配置不生效前端跨域被瀏覽器攔截現(xiàn)象前端跑在localhost:4200后端跑在8080瀏覽器控制臺(tái)報(bào)跨域錯(cuò)誤但代碼里明明設(shè)置了Access-Control-Allow-Origin。原因CORS 的響應(yīng)頭必須要在預(yù)檢請(qǐng)求階段返回也就是OPTIONS請(qǐng)求也要有對(duì)應(yīng)處理很多人只處理了 GET/POST 而漏掉了 OPTIONS。解決在 WebModule 的 BeforeDispatch 事件里統(tǒng)一加三個(gè)響應(yīng)頭Response.SetCustomHeader(Access-Control-Allow-Origin, *); Response.SetCustomHeader(Access-Control-Allow-Methods, GET, POST, PUT, DELETE, OPTIONS); Response.SetCustomHeader(Access-Control-Allow-Headers, Authorization, Content-Type, X-XData-*);Access-Control-Allow-Headers里的Authorization是給 JWT 用的Content-Type是給 JSON 請(qǐng)求體用的。注意*在需要攜帶 Cookie 的場(chǎng)景下不適用那時(shí)要寫(xiě)具體域名。5.6 URL 資源名大小寫(xiě)導(dǎo)致 404現(xiàn)象實(shí)體類(lèi)叫TUserInfo前端訪(fǎng)問(wèn)/userinfo是通的但訪(fǎng)問(wèn)/userInfo就 404。原因XData 的資源名映射保留了實(shí)體類(lèi)名的原始大小寫(xiě)而且默認(rèn)復(fù)數(shù)化時(shí)不改大小寫(xiě)。解決約定所有資源名統(tǒng)一小寫(xiě)訪(fǎng)問(wèn)或者在實(shí)體類(lèi)上用[Entity(userinfo)]顯式指定資源名不要讓前端去猜大小寫(xiě)規(guī)則。5.7 部署到 Windows 服務(wù)后模塊不加載現(xiàn)象開(kāi)發(fā)環(huán)境一切正常放到服務(wù)器上注冊(cè)成 Windows 服務(wù)一啟動(dòng)就報(bào)模塊不存在或找不到指定的模塊。原因跑 WebBroker 應(yīng)用需要依賴(lài)Delphi 12.3的運(yùn)行時(shí) DLL如rtl290.bpl等服務(wù)器上沒(méi)裝對(duì)應(yīng)版本運(yùn)行時(shí)庫(kù)。解決發(fā)布時(shí)選用Release Static編譯模式并勾選Link with runtime packages取消勾選讓 BPL 依賴(lài)打進(jìn) EXE。如果你是做綠色發(fā)布記得把XData和Aurelius注冊(cè)運(yùn)行庫(kù)包也做好靜默安裝腳本不然換臺(tái)機(jī)器就翻車(chē)。6. 收尾技巧給 XData 服務(wù)加日志、鑒權(quán)和聯(lián)調(diào)腳本6.1 用攔截器記錄每次請(qǐng)求耗時(shí)生產(chǎn)環(huán)境里最怕的就是接口偶爾慢一下但說(shuō)不出具體是哪個(gè)請(qǐng)求慢。XData 服務(wù)端的WebModule里有兩個(gè)事件可以利用BeforeDispatch和AfterDispatch。我在BeforeDispatch里記錄開(kāi)始時(shí)間在AfterDispatch里計(jì)算耗時(shí)再拼上請(qǐng)求路徑、查詢(xún)參數(shù)、狀態(tài)碼一行結(jié)構(gòu)化日志就出來(lái)了procedure TXDataWebModule.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin FStartTick : TStopwatch.GetTimestamp; end; procedure TXDataWebModule.WebModuleAfterDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var ElapsedMs: Int64; begin ElapsedMs : (TStopwatch.GetTimestamp - FStartTick) * TStopwatch.TicksPerMillisecond; LogRequest(Request.PathInfo, Request.Query, Response.StatusCode, ElapsedMs); end;這一段代碼簡(jiǎn)單直接只要在LogRequest里把信息寫(xiě)進(jìn)日志文件或數(shù)據(jù)庫(kù)就足夠定位百分之八十的性能問(wèn)題。慢查詢(xún)的特征很統(tǒng)一$filter條件沒(méi)走索引、$skip頁(yè)數(shù)太大、關(guān)聯(lián)對(duì)象懶加載被逐條觸發(fā)日志里一看耗時(shí)就能確定方向。6.2 配合 FireMonkey 客戶(hù)端快速聯(lián)調(diào)XData 做服務(wù)端Delphi 12.3 的 FireMonkey 做客戶(hù)端是同一個(gè)技術(shù)棧下很舒服的組合。我一般會(huì)在客戶(hù)端工程里放一個(gè)調(diào)試窗體放一個(gè)TEdit填 URL一個(gè)TMemo看返回結(jié)果再放幾個(gè)按鈕對(duì)應(yīng) GET、POST、PUT、DELETE。聯(lián)調(diào)時(shí)不需要斷點(diǎn)直接在這個(gè)調(diào)試面板里發(fā)請(qǐng)求返回的 JSON 格式化打印出來(lái)前端同學(xué)要什么字段一眼就能對(duì)照。這個(gè)方法每次調(diào)試都幫我篩掉一類(lèi)問(wèn)題到底是接口數(shù)據(jù)不對(duì)還是客戶(hù)端解析邏輯不對(duì)。接口返回的 JSON 在調(diào)試面板里先看一遍再讓前端去對(duì)接溝通成本低很多。從那以后我每次接手 XData 項(xiàng)目都會(huì)強(qiáng)制自己先把/tms/xdata/info、實(shí)體映射、調(diào)試面板這三件事走一遍確認(rèn)環(huán)境是健康的再去碰業(yè)務(wù)邏輯。希望這篇筆記能幫你少踩幾個(gè)坑把 XData 真正用起來(lái)。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91路www| 国产久久免费精品视频| 蜜臀AV秘一区翔田千里| 亚洲色图 综合| 狼狼色丁香久久婷婷综合五月| 亚洲天天影视色综合| ?亚洲伊人伊成久久人综合网| 91熟女视频| 精品九九九九九九九九九| 久久五月视频| 午夜男女爽爽爽在线视频| 翔田千里A片一区二区| 成人26uuu| 91综合天天看| 性性久久| 麻豆AV96熟妇人妻| 日本三级黄页| 欧美精品第3页| 老司机射| 国内毛片国产专区二| 精品无码一区二区三区| 蜜臀久久99精品久久久久电影| 欧美少妇第一页| 日本超碰在线国产一区| 美日韩成人| 欧美性爱视频免费一区一A | http://qxhbdz.com| 亚洲中文一区二区三区| 热99这里只有精品| 狠狠色狠狠色狠狠五月| 久久五十路熟女人妻| 97操| 夜夜爽夜夜爽| 色色97爱| 亚洲开心网| 国产又粗又长又大的视频| 91AV天美在线视频| 精品在线78| 尤物视频偷拍免费| 亚洲国产精品久久久久婷婷老年| 亚州国产成人精品女人久久| 精品人妻一区二区三区蜜桃视频| 国产午夜精品一区二区三区牛牛| 亚洲欲色| 日本操逼aaaaa| 天堂亚洲欧美| 久这精品中文在线观看视频| 欧美成人性爱视频在线播放| 亚洲无码视频免费在线观看网址!| 久久伊人影院| 97这里只有精品| 五月丁香色色网| 好吊色综合| 色噜噜人妻丝袜a∨先锋影 | 国产亚洲精品美女久久久m| 精品国产一区二区三区四区在线看| 精品少妇999| 日本孕妇一区二区视频操逼免费看 | 国产激情av女片自拍| 久九干| 精品九九九九九九| 午夜福利av电影在线| 亚洲精品三区在线观看| 久久美女国产| 久久东京热久久| 国产大学生口爆吞精合集| 国产精品一区av在线| 韩国午夜理伦三级好看| 亚洲性爱无码乱伦av| 婷婷久久综合久| 日韩啪啪啪啪啪| 国产极品999| 97久久免费| 久久色一区二区| 91视频综合在线| 蜜桃臀av一区二区| 国产女人与拘做受视频免费| 综合久久婷婷| 狠插 制服 自拍| 久久噜| 黄骗免费网站| 欧美人人AAA| 国产成人亚洲精品自产在线| 超碰久久综合| 夜夜操天| 东京热综合久久一区二区| 天堂综合网| 丁香五六月啪啪| 国产精品成人无码a v毛片| 国产激情视频在线观看| 曰本熟女视频| 99在线精品视频| aaaa少妇高潮大片| 天天干2019| 神马久久免费电影观看| 色综合天天| 激情五月天综合网| 91人妻人人澡人人爽人人精品| 精品免费一区| 免费福利视频中文字幕| 91超碰人人操| 欧美精品,四区。五区| 中日韓欧美高清| 久久久久久九九九| 少妇第一页| 亚洲激情深爱文学小说网站| 欧美色色人| 亚洲精品久久久久毛片A片拉屎 | 亚洲春色激情小说| www.91久久| 啊啊啊不要好爽日韩无码一区| 欧美色www亚洲国产阿娇要播| 亚洲美女精品九九视频| 综合网,亚洲,欧美| 天天色踪合| 乱伦一二三区| 日本亚洲vr欧美不卡高清专区| 色哟哟av网址| 亚洲黄网在哪免费看| 欧美日本久久精品一区| 亚洲美女精品九九视频| 天堂九九九九九九九九九| 色哟哟精品1精品2| 天天日B夜夜干B时时操B| 超碰日韩美妻| 国产综合网站在线播放 | 中国少妇XXXX做受| 秋霞一区二区三区四区五区六区七区| 另类亚洲一区二区三区| 偷窥自拍亚洲色图| 久久免费9| 尻女朋友一夜| 18禁在线视频| 日夜尻逼网| 亚洲乱伦图片视频| 精品二区三四区五电影| 亚欧高清在线| 蜜桃传媒一区二区亚洲| 青青操网| 中文字幕 一区二区 亚洲无码| 夜夜骑夜夜操| 97 国产一区| 神马麻豆福利院| 志村玲子视频一区二区| 天天激情干| 亚洲男人天堂视频| 91婷婷伊人狠人| 美女裸体无遮挡永久免费观看网站| 久久精品欧美一区蜜桃| 啪啪视频亚洲第一| 偷拍99| 五月天玖玖资源站| 琪琪精品免费一区二区三区| 亚洲天堂美臀在线| 日韩素人无码一区二区三区三州| www国产无码| 一区,二区,三区网站| 无码一区二区精品视频久久久春药 | 天天添天天干电影| 欧美gv在线观看| 亚洲综合贴图91| 久久一区二区高清免费| 国产人妻久久精品一区二区三区| 色九九九综合| 丰满的三级少妇欧美久久久| 亚洲欧美日韩制服另类| 久草久日| 按摩中文字幕| 九九色逼| 亚洲成人日韩小说| 手机在线A片| 五月天综合网| 青草视频在线看看看看看看看看看| 美欧色综合| 人妻无码久久一区二区三区免费| 欧美性爱系列| 亚洲精品毛片在线观看| 国产一二三福利视频网| 人妻免费观看| 日韩AV中文字幕电影| 操逼片国产| 亚洲欧美综合| 爱丝福利| 色哟哟av网址| 2011国产精品| 思思热国产在线视频| 亚洲图片小说欧洲| 日韩综合97P| 九九热超碰97亚洲最新香蕉| 亚洲高清无码免费观看视频| 99视频内射三四| 狠狠色噜噜狠狠狠狠狠色综合久久| 乱色老一区二区三区的观看方式 | 96免费视频在线| 女优视频第10页| 超碰97国产欧美| 成人精品在线| 逼逼逼逼操操操操操操操操操午夜剧场 | 四虎影视国产精品| 青娱乐999| 亚洲图片日本AⅤ欧美在线| 99久久久| 欧美激情亚洲| 亚洲日本天堂| 久久激情视频| 天天超级碰碰碰| 91热情品| 青青草在线视频人人想人人上| 亚洲中文字幕网| 色噜噜精品一区二区三| 久久久久亚洲?V片无码V| 日欧操屄| 欧美人与动性人交a| 欧美狠狠| 99999re| 亚洲人综合19| 中文字幕乱码在线观看| 搡老女人老91妇女熟女| 青青操日韩| 亚洲AV色图一区| 久久9999| 中文字幕一区电影在线观看| 试看日韩黄片| 中文字幕丰满人妻日本| 久久九九97| 麻豆亚洲AV成人无码久久精品| 清纯唯美综合亚洲| 熟女精品日韩一区二区三区| 欧美色图片| 黄人人操人人操| 日本高清视频xxxx| 国产日本久久免费精品| 开心五月天激情网| 亚洲s在线观看| 啊啊啊好舒服视频在线观看| 伦理日韩国产久久| 亚洲无码视频免费在线观看网址!| 91美女精品| 福利视频香蕉免费一区二区在线| 中文字幕日韩人妻视频一区二区三区| 国产成人精品无码久久| 97av在线视频| 九九热九九热| 97超碰欧美手机在线| 极品出轨视频网站| 欧美色偷偷| 曰韩人妻中文字幕在线 | 激情五月丁香五月| 级品肉射| 在线视频资源| A 在线网址| 五月丁香综合网| Av色五月| 深喉吞精| 日本三级A片网站com| 亚欧成人综合影院| 少妇免费视频| 国产97在线播放| 精品国模无码| 性爱1区| 极品五月天噜噜| 91 综合 色| 91精品久久久久| 午夜视频好爽啊| 亚洲五月婷| 神马久久69| 青青草在线视频播放器| 成人一道本免费视频| 亚洲综合成人网| 嗯嗯嗯啊啊啊在线免费观看| 免费视频97| 日本免费中文字幕在线| 97超碰资源网| 啊啊啊啊操死我| 日韩性爱视频免费在线| 成人精品一区二区三区| 清纯唯美亚洲| 插入综合网| 玖玖超碰熟| 成人日韩3| 这里有精品| 青青操日韩| 草莓精品视频在线免费观看| 91+欧美| 精品国产AV一区天美传媒| 成人麻豆av电影网站| 啊啊啊啊啊啊啊网址在线观看| 青草一区二区| 精品婷婷| 97亚洲自在精品在线观看| 色哟哟AⅤ| 狠狠操夜夜操蜜桃视频三区| 99少妇| 人人人人插| 日韩欧亚中文在线| 黑人白女精品一区| 干B| 国产精品人人爽人人做可爱福利| 久久精品视频久久久| 日本综合色图| 欧美一区91大爱| 亚洲综合20p| 男女一级A片大黄,一进一出| 午夜精品久久久久久久第一页按摩| 国产aⅴ无码片毛片一级网站| 97久久国产精品| 五月婷婷爱六月丁香色| 尤物AV免费网站| 成人国产精品三级A片| 亚洲精品1区| 欧美性高潮| 激情av| 婷婷丁香五月综合| 插欧洲美女欧美精品| 亚洲一二三| 国产区91柔拿会所技师| 亚洲欧美日韩国产丝袜自拍中文| 国产精品白领在线观看 | 国内三级自拍小视频在线观看 | 91碰超| 香港日本韩国人妇99www.wccm20| www国产精品| 人妻在线中出视频| 性爱网站一区二区| 99精品九九九九九九| 色五月av| 久草视频在线视频在线视频在线观看| 色男人色天堂东京热| 日韩激情啪啪| 久久久国产av美女私房| 丝袜视频网国产90| 六月丁香五月婷婷| 91丝袜人妻| 78精品| 久久二| 777奇米影视777四色| 男人的天堂久久| 99精品在线| 国内毛片热久久思思热| 综合视频91| 亚洲精品一区中文字幕乱码| 日本孕妇一区二区视频操逼免费看| 蜜臀AV成人精品蜜臀| 偷拍自拍在线视频观看| 粉嫩av在线| 黄色十八禁网站| 国产真实野战在线视频| 思思热在线视频免费| 国产精品不卡一区二区三区| 香蕉在线一区二区三区| 亚洲综合另类小说色区亚洲成av人片在www| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 人妻五十路在线| 婷婷色导航| 日韩在线一区高清在线| 欧美亚洲首页| 国产日韩中文字幕欧美| 蜜色网色哟哟| 人妻少妇色综合| 精品国产一区二区三区香蕉欧美| 亚洲欧美天堂| 成人AV在线网站| 亚洲棕合电彰| 日产狠狠干| xxxx网站亚洲精品| 国产成年免费大片黄在线观看| 蜜臀网址在线| 蜜臀久久99精品久久久久久成人小说 | 无码操逼网| 亚洲欧洲自拍| 少妇天堂| 国产suv精品一区二六| 日夜干射色啊| 亚洲永久AV无码精品秋霞| 亚洲有薄码区日本系列中文字幕| 囯产操逼片| 午夜福利1区2区3区| 97超碰色| 超碰97丝袜| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 99re在线视频| 天天综合影院91| 好湿好紧好爽 视频| 91在线精品| 在线岛国新天堂8| 懂色中文一区二区三区| 日韩欧美性爱电影在线观看| 青草草免费网站av| 国产精品制服丝袜清纯唯美| 亚洲欧洲成人在线电影| 精品无码久久久久久久杏吧| 亚洲综合20p| 亚州性色| 亚洲高清色综合| 69精品在线| 亚洲激情综合| 婷婷五月天激情四射| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久中出在线| 99xav| 欧美性生活内射| 好好的日:com久久九九| 欧美在线色| 亚洲成人妻日韩在线| 日韩精品人妻中文字有码在线| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 亚洲色图加勒比| 99热色精品| 综合色图,成人综合网| 长长久久免费视频| 99re8超碰| 老熟女熟妇| 超碰久久精品| 噜噜噜亚洲精| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 涩涩五月天| 亚洲性爱高潮影院| 97频视在线| 丁香五六月啪啪| 欧美激情 亚洲色图| 97在线视频网站| 91 欧美| 欧美日韩国产黄色片| 一区二区三区成人高清视频| 99只有精品| 久久熟女人| 亚洲精品国产av天美传媒| 久久九精品| 资源新线在线天堂| 欧美αv.com| 操久久久久久| 天天日天天屌天天操| 日日不卡av| 日欧操屄| 久久女人一区二区三区| 10000部十八禁看电影| 欧美情色亚洲| 翔田千里爆乳巨臀无码| 国模精品一区二区三区苹果色戒| 亚洲人精品久久久喷水| 色原狠狠天天天| 97精品视频在线播放| 欧美美女视频| 国产精品探花视频| 国产亚卅97| 欧美综合另类| 日韩av影片在线观看| 香港成人一级视频在线青青草| 欧美性综合| 亚洲黄色视频在线观看视频| 丁香五月影院| 色综合 加勒比| 国产h小视频在线观看免费| 中国AV美女| 蜜臀av在线播放一区二区三区| 欧美日韩一干二干| 91综合国产精品| 国产一区二区三区视频在线看| 成年人一级黄色毛片大全在线观看| 丰满少妇一区二区三区四区观看 | 亚洲综合第一页| 日本三级韩三级99久久| 精品一二三区女同| 精品国产乱码久久久久久蜜臀| 福利伊人玖玖国产| 夜夜操狠狠操| 97超碰香蕉| 亚洲天堂 视频你懂的| 超碰97首页| 影音先锋日本乱伦| 亚洲中文电影| 91东京热男人的天堂| 久艹伊人精品综合在线| 97免费视频在线观看| 男人的天堂2010| 亚洲 欧美 日本 国内 首页| 伊人操你| 国产精品香蕉热久久新品| 狠狠爱夜夜| 精品视频专区| 97久久精品亚洲中六字幕| 中文字幕在线24| 久久激情网| 野狼激情网| 欧亚第一综合网| 国产后入清纯| 日本媚薬中文字幕在线| 久久伊人最新网址视频| 久久 精品| 成人小说视频在线精品欧美| 五月丁香拍拍激情综合三级| av中文在线| 福利风月五月天影院| 97精品一区二区视频| 中国女人内射6XXXXX| 午夜福利av电影在线| 中文字幕日韩电影人妻| 中文字幕日本久久| 日本九九久久99播| 久久激情四射婷婷丁香五月天| 日少妇视频| 思思性爱| 国产丰满少妇久久久精品影院| 97超碰中文字幕| 久久久久9999| 操人无码| 九热超碰| 很黄很色的视频在线观看| 麻豆黄色五月天| 夜夜夜夜久久久久| 亚洲激情综合| 天堂综合网| aaa一级黄片| 99www.bibizy香蕉资源国产一区二区三区高清| 试看60秒| 啪啪资源网| A男人的天堂| 国产欧美精选激情视频| 青青伊人久久| 精品亚洲国产成人av网站| 麻豆福利视频导航| 操啊国产| 欧美97在线观看| 精品黄色电影| 亚洲成人一二三区| 三级激情网站| 国产91美女视频| 天天爽夜夜操| 东京热一区二区中文字幕| 在线不卡视频| 夜草网站| 国模不卡一本二本三电影| 亚洲国产一区二区入口| 色吊丝 日日骚 清纯唯美| 亚洲精品中文字幕一区在线视频 | 国产午夜福利合集| 国产在线不卡导航| 亚洲一区二区三区中文字幕| 大香蕉日韩欧美| 狠狠狠狠狠| 亚洲密乳AV| 婷婷性网| 亚洲欧美综合网站| 97WW精品| 乱伦3P视频| 日本影视久久免费| 久艾草在线精品视频在线观看| 在线观看A啊啊啊| 五月婷婷六月丁香| 日日日日做夜夜夜夜无码| 色综和网| 成人日韩中文字幕| 国产这里只有精品| 中字乱伦AV| 亚洲国产奇米影视久久| 久久无码成人| AAAAAAAAA黄片| 亚洲欧美清纯| 精品免费囯产一区二区三区| 99亚洲人人| 久久久中文| 成人免费福利网站国产| αⅴ天堂| 亚洲国产精品成人无码久久久| 亚洲AV无码乱码| 97国产|免费| 欧美激情精品久久久| 久久欧洲| 国产精品。| 色穴精品| 欧美成人9797| 香蕉在线一区二区三区| 国产日比| 加勒比大香蕉视频在线| 日韩精品一区二区三区四虎影视| 三级片网站在线播放| 色官网在线| 首页亚洲国产高跟丝袜诱惑视频 | 色婷婷综合网| 91色爽欧美| AV色图| 88在线一区二区三区| 久操网址| 亚洲制服欧美另类内射| 一区二区三区视频| 色狠人在线99| 伊人欧美大香蕉视频| 国产91 丝袜在线播放| 天天综合中文字幕 91| 久这精品中文在线观看视频| 国产主播福利| 无码高清国产AV| 91美乳| 欧美亚州综合图片| 97久久国产精品| 欧美热图99| 久久久久久97| 草草网站影院白丝内射| www超碰| 欧美 日韩 婷婷 五月| 久久国产精品视频| 天天干天天操天天干天天操| 色性荡荡荡荡视频| 无码九九| 20cm女自慰在线日韩欧美| 亚洲国产奇米影视久久| 嗯嗯啊啊啊好舒服| 狠狠爱综合网| 色五月婷婷色| 国产精品伦理| 丝袜美腿制服人妻二区中文字幕| 欧美一二在线| 日韩在线地址一| 91扒丝袜综合在线| 51国产午夜精品视频| 色色色999| 智利AV在线网| 亚洲蜜桃V妇女| 亚洲诱惑天堂| 亚洲综合精品国产一区| 精品美女少妇一区二区| 国产精品久久久久综合| 欧美在线干| 无遮挡猛进视频免费无限观看 | 美女让帅哥通她小鸡鸡| 日本午夜久久电影| 老女人综合| 中文乱码99| 黄色一区二区秘书性感| 欧美成人色| 熟女乱伦A| 美女上床网站| 丝袜AV一二三区| 日韩三级伦理中文字幕| 亚洲综合骚逼| 91色艳| 黄片com.| 美欧色综合| 亚洲男人的天堂AV| 国产成人精品日本亚洲语言| 日本阿v天堂在线观看| 久久精品老司| 青娱乐亚洲自拍| 97超色| 99只有精品| 激情抓乳插进去啪啪啪日韩| 91骚熟女| 日本新免费二区三区| 久久人妻办公室视频| 国产av波波国产精品| 精品人妻视频一区二区在线播放 | 久久久97| 国产精品国产精品国产| 久久日本熟女精品一区| 久操99| 欧美精品第3页| 亚洲中文字母在线播放| 极品综合| 福利视频香蕉免费一区二区在线| 98超碰欧美| 黄色av播放免不| 欧美乱妇狂野欧美在线视频| 91美女中出| 国产网站在线播放| 国产成年精品高清在线观看91| 国产精品久久久久久久久久久久久久| www被窝色com| 玖玖超碰熟| 综合欧美日韩在线| 97人亚洲综合字幕| 黄页18禁| 18岁禁 茉莉成人久久| 青青草手机在线免费观看| 欧美日韩国产中文精品字幕自在自线,| 在线A日本| 亚洲砖码砖专无区2023| www.色操逼| 婷婷五月天福利| 国产11页| 男人天堂站| 久草男人天堂| 亚洲女人91| 精品国产Av无码久久久亚洲| 亚洲国产精品无码AV久久久| 无码丰满熟妇一区二区浪潮AV| 中文字幕乱码人妻二区三区| 不卡一区二区日本视频| 99免费在线视频| 亚洲中文字幕乱码无码一区二区 | 黄片视频观看| 日韩欧美大力操| 嫩草影院性色| 啊啊啊啊啊在线观看网址| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 看免费的黄片| 人人插人人搞人人操| 久超碰这里只有精品| 999国产精品999久久久久久| 嫩草在线视频| 久热色情精品| 爱丝福利| 亚洲成人日韩小说| 欧美在线官网| 大香蕉视频啪啪啪啪| 中文字幕亚洲热播人妻| 中文字幕视频一区视频二区| 亚州欧美综合| 欧美少妇性爱网站| 激情小说亚洲图片| 久久国产乱子伦精品免费女人| 五月综合激情| 日韩精品资源| 国产久久久久久久久一区二区| 丁香婷婷激情五月天无毒不卡| 亚州性色| 国产女性无套 免费观看| 看看小穴| 日本天天干天天操一区| 国产精品青草综合久久| 无码九九| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 97在线欧洲| 九七色图| 激情六月天| 国产400孕妇孕交群| 久久98| 久久9久久| 国模一区二区三区| 日本人妻伦在线中文字幕| 嗯啊不要啊啊在线观看视频| 欧美夜夜草视频| 熟女中出视频| 极品美女福利在线观看| 天天噜| 色哟哟av网址| 天天干天天插| 午夜国产成人精品视频| 久久久久密臀视频| 九九碰九九爱97超碰| 中文字幕国产在线天堂| 亚洲欧洲无码97久久精品| 日本高清免费一本视频在线观看| 欧美伦乱爱| 日韩人妻少妇中文字幕| 日本免费一级AAA大片器 | 日韩性爱高清免费视频| 男人亚洲天堂| 久草线上视频免费看| 春色校园综合网| 97人人射| 青青操狠狠撩| 亚洲图片激情小说| 美女骚尻视频| 中文字幕亚洲欧美在线不卡| 国产97视频免费观看| 国产精品久久久吖| 亚洲欧美清纯| 日日日色色色色色| 国产精品视频| 女人一区| 亚洲熟女乱熟乱熟妇综合网二区| 亚洲福利中文字幕在线| 精品国产无码中文| 国产亚洲精品久久久久小| 97综合| 欧美岛国精品在线观看| 日骚逼视频| 传媒在线观看一区二区三区| 呻吟 欧美 日本 中出| 蜜臀aV午夜一区二区三区| 亚熟hd视频在线| 国产青一二三| 久久夜色一区二区| 大香蕉之青青草原| 9997se| 一个色导综合| 欧美97爱| 欧美一区二区三区黄色影视| 在线观看亚洲专区| 久久色一区| 日韩无码服务区| 亚洲色 国产 欧美 日韩| 欧美图片色综合| 色欲久久99国产精品久久久久久| 美女极品一区二区三区| 亚洲淫乱骚妇AV| 欧美精品久久久久久久丰满| 男人的天堂网免费| 天堂日本亚洲欧美| 精品区9| 国产女主播视频在线观看| 欧美爱三级日韩久久| 一区二区三区在线资源| 激情欧美97| 久久这里只精品99re66图| 亚洲日韩东京热一区| 奇米四色网| 97亚洲国产影视| 青娱乐休闲视频在线观看| 五月天婷婷小说| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 五月天黄色av| 久久久天美| 26uuu国产成人综合| 国产超碰在线一区| www.99色| 九九九九亚洲| 青娱乐福利99| 色青青久久影视| 日日干夜夜欢| 色综合久久88色综合久久天天| 色超碰综合| 天堂а√在线最新版在线| 人人爽天天爽| 色翁荡息又大又硬又粗又爽| 99热免费精品| 国产人伦a片信息免费片| 欧美狠狠弄| 天堂无码| 精品无码人妻一区二区免费蜜桃| A 在线网址| 97久久精品不卡| 久草视频分类在线| 九九九999久久久网站| 久久久999日本大片| 国产在线视频午夜精华在| 麻豆区99999| 日韩欧美成人综合在线| 少好三P| 91高清无码下载| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 92性色国产午夜福利在线661| 99www.bibizy香蕉资源国产一区二区三区高清| 最新亚洲黄色免费电影| 国产AV人人 夜夜人人澡| 99久久久er直播网址| 亚洲激情久久久伊人综合| 色香色香欲天天天影视综合网| 91国产操逼视频| 怡春苑东京热| 99热在线观看| 精品久久久久久无码| 综合97久久| 欧美图片偷拍| 影音先锋视频在线| 神马久久久久久久| 中文字幕精品久久久久人妻红杏ⅰ| 精品区国产区一区二区三区| 日本一区二区三区四区五区六区七区八区九区| 亚洲色图久久成人| 色官网在线| 手机看片91人妻| 国产精品在线一区二区| 亚洲天堂综合AV| 一本色道久久天天射天天干| 玖玖资源视频一区二区三区| 久操99| 成人性爱全视频观看| 人妻夜夜爽天天爽三区麻豆AV网站| 久久久久久裸体| 在线人妻熟女一区二区三区四区五区| 日本成人电影资源网| 国产精品久久久久久久久久久久| 中文字幕人乱码中文字的预防方法 | 亚洲色图尤物视频| 校园春色五月天| 日产123区精品免费观看| 99热官网| 黑人精品成人一区二区三区 | 吊色| 欧美日韩黄色片一区二区三区四区人与兽做爱| 男人的天堂一区三区| 精品无码一区二区三区| 日韩精品人妻| 亚洲精品九九九九九九| 亚洲一二三| 97操97色| 思思热免费视频观看| 能在线播放的国产三级| 男啪女色黄无遮挡免费观看| 97超级久久| 美女让帅哥通她小鸡鸡| 天综合网欧美| 欧美色图私拍91| 亚洲春色激情小说| 九九伊人网| 精品人人插人人操| 人妻中文字幕日韩电影| 俄罗斯一区二区视频在线观看 | 综合天天网| 欧美三级一级| 尤物av网站| 超碰97欧美在线| 五月丁香大香蕉| 亚洲国产成人精品无码专区| 久操视频在线观看| 久久精品熟妇丰满人妻99| 91国产丝袜白虎| 色偷偷综合91久久噜噜| 天天插天天操天天摸天天射天天看| 欲香欲色天天天综合和网| 日韩三级网址| 白丝1区2区3区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 91强在线播放| 久久综合女优| 日韩在线97| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产精品乱码久久久| 亚洲色婷婷综合久久一区二区三区| 一二视频神马久久传媒| 蜜桃臀AV在线| 亚洲久草AV色图| 久久久久国色αv免费观看| 农村少妇久久久久久久| 啊啊啊好大好深| 78精品在线| 操老熟女AV| 91精品久久久久| 99热伊人| 少妇综合网| 人妻性爱一区二区| 性久久| 国产激情在线观看| 九九色精品| 亚洲不卡AV在线| 久久国99999| 大乔未久88一区| 国产精品3| 伊人网在线点播| 超碰在线91| 亚洲?V高清一区二区三区尤物| 亚洲欧美色图小说| 欧美日韩国产另类综合| 国产午夜激片Av毛片不卡| 国内精品久久久久影院亚洲| 色五月婷婷五月天| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 九九九国产精品| 麻豆91熟妇人妻中文字幕茄子| 五月天伊人网| 男女一进一出视频久久| 亚洲精品天堂久久A∨51成人漫| 在线人人人人人人精品超| 久久久九九网站| 大鸡吧尹人在线| 超碰97首页| 蜜桃午夜视频一区二区| 天天影视色香欲综合网小说| 搡老女人老妇女AAA一VU麻豆| 国产成人www免费人成看片| 中文字幕五区| 九热超碰| av三级电影在线播放| 久久九九视频九九视频| 日韩一级二级| 高跟伊人julia ann| 色与欲影视天天看综合网| 超碰在线人人射| 3D污黄视频在线观看| 国产精品无码AV网站| 上床不卡网站| 久久香蕉国产线看观看亚洲女人| 国产精品久久aV| 国产日本久久免费精品| 欧美亚洲美少妇一区二区| 乱人乱色一区二区三区免费| 欧美精品23| 爱射综合| 天天综合网亚洲综合网| 欧美综合亚洲综合| 日本精品不卡一二三区| 涩爱AV在线| 五月天人妻综合| 亚洲AV秘无码一区..| 国产做?爰片久久毛片?片美国| 青青草天天亲夜夜操网| 加勒比伊人综合| 97干在线| 大地资源在线观看中文第二页| 麻豆九九九| 欧美97爱| 国产一区二区啪啪视频| 国产丰满熟夫69mpp| 国产精品乱码久久| 亚洲天堂久久| 2017天天透天天通天天擦| 少妇久久| 熟女精品一区二区三区| 伊人少妇久久久| 嫩草在线视频| 欧美少妇一区二区三区| 物业黑人 AV一区| 日韩欧美大力操| 国产精品色色| 久久超碰天天| 1禁看欧美黄片免费看| 天堂av2019| 舔足天天操天天射| 一区在线国产播放| 天天热精品| 99热这里只有精品地址| 91天天c| 超碰在线欧美性爱激情| 国模限制级电影| 成人五月天丁香激情综合| 99精品在线| 午夜操一视频一区| 噜噜噜在线视频| 性交一区二区在线播放| 欧美日韩国产三级黄色| 鸥美插入视频| 一级人妻性爱视频| 亚洲97P| 白丝被操91| 色盈盈影院| 黄片免费看的| 青青欧洲黑| 欧美成人A天堂片在线观看| 免费看污网站| 欧色网址| 翔田千里A片一区二区| 麻豆天美国美国产| 国产色图乱伦| 欧美日日夜夜| 精品人妻一区二区视频| 欧美熟女丝袜| 美女操逼福利视频| 色五月激情AV在线| 国产女性无套 免费观看| 综合色久欲| 99爱爱| 人人操 欧美| 欧洲精品一区二区三区| 日本东京热加勒比久久| 神马久久久久久久久久久久| 久久91精品国产9丨久久分亭| 国产不卡的视频 | 丰满少妇精品一区二区| 无码伊人久久大杳蕉中文无码| 啪啪啪综合| 老师充足的奶水小说| 干干干天天| 中日韩久久久免费看| 狼人综合婷婷激情四射 | 色欧美天天| 人妻精品免费一二三区| 欧美日韩国产中文精品字幕自在自线,| 黄人人操人人操| 试看60秒| 依人大香蕉| 久久AV无码AV| 欧美韩日精品资源| 久久曰曰| 无码一区免费在线不卡| AV天黑人| 91青视频| 成人无码影片视频在线| 牛牛AV人人夜夜澡人人爽| 日韩精品怡红院| 97色婷| 日韩精品-原创伙伴| 好舒服视频| 色色色综合网| 免费观看性欧美一级| AV女优男人的天堂| 青春草A| 欧美色婷婷| 国产精品蜜臀久久久久无码AV| 97人妻人人躁人人玩人人| 最新一二三区视频| 久久无码一区二区二三区性色| 密乳视频在线| 热热色AV| 色九九九| 九色婷婷| 狠狠操使劲操| 天堂亚洲精品| 久久AV无码1区2区3区| 午夜高清成人在线视频| 国产一级内射无挡观看| 久久精品无码专区| 久草男人天堂| 婷婷久久大香蕉| 久操网址| 黄色AV免费| 欧美精品一二三| 五十路熟女,国产欧美精品区一区二区三区| 中文字幕一区 二区三四五 区日 日骚 | 色婷五月| 特级毛片特黄久久免费看| 日本人妻丰满熟妇久久久久久| 久久大香蕉97| 黑人精品久久97| 高清不卡视频| 在线只有精品| 一区二区三区机械有限公司| 国产无码高清操逼视频| 欧美天天综合网| 91少妇人妻| 久久99干一本高清| 丝袜av一区二区三区| 亚洲中文字幕97久久精品少妇| 亚洲丁香花色| 亚洲色 国产 欧美 日韩| 中文字幕美女91| 91丨国产丨白浆秘 洗澡动漫| 超碰97COm中文| 婷婷激情五月综合| 欧美玖玖爱免费玖玖| 天天天天天超碰| 综合干干干av久久久综合网| 色哟哟-国产专区| 人妻天天操天天爽视频免费| 婷婷丁香五月激情啪啪| 3d成人精品一区二区| 黑人美精品 A片| 综合影院永久入口国产| 青青草五月份天| 少妇色欲综合网2| 97伦乱| 日韩干B| 亚洲精品黄码久久久久| 欧美日韩精品久久久久东北老熟妇| 狠狠爱AV| 亚洲双插| 偷窥自拍亚洲| 97中文字幕一区| 少妇淫妇久久久久久久| 9I1性色影院| 老熟乱一区二区三区四区| 青青青青操国内视频在线| 九久精品| 欧美亚洲情色| 国产在线强奸视频| 成人av在线播放| 午夜福利无毒不卡| 久草免费在线一区二区| 91|九色|国产熟女| 色婷婷丁香| 精品.99999| a人欧美综合天堂麻豆| 国产AV人人 夜夜人人澡| 日本黄色天堂| 国产精品夜夜夜| 四虎AV在线播放| 国产拍偷精品网站| 中文字幕一区二区三区字幕| 国产乱伦视频污| 人人妻人射| 久久精品三级影视| 高清在线偷拍自拍视频| 久久超碰爱| 色 婷97| 亚洲日产专区婷婷| 呻吟 欧美 日本 中出| 麻豆一区二区三区在线看 | 国产精品不卡av免费在线观看| 探花视频免费观看国产专区| 偷拍亚洲熟女视频播放|