久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

前端注冊(cè)頁(yè)面實(shí)戰(zhàn):axios+apifox模擬接口實(shí)現(xiàn)前后端聯(lián)調(diào)

前端注冊(cè)頁(yè)面實(shí)戰(zhàn):axios+apifox模擬接口實(shí)現(xiàn)前后端聯(lián)調(diào) 先別著急寫(xiě)代碼。很多新手學(xué)前端第一個(gè)練手項(xiàng)目就是注冊(cè)頁(yè)面但做完之后總有一種“這頁(yè)面能動(dòng)但我說(shuō)不清它為什么能動(dòng)”的感覺(jué)。問(wèn)題往往不在于HTML和CSS而在于請(qǐng)求到底發(fā)到哪去了、后端到底收到了什么、返回的數(shù)據(jù)前端又是怎么處理的。這次這篇實(shí)戰(zhàn)我把整套鏈路拆開(kāi)揉碎前端用原生的HTML/CSS/JavaScript寫(xiě)一個(gè)超簡(jiǎn)潔的注冊(cè)頁(yè)面請(qǐng)求部分用axios發(fā)POST后端接口直接用apifox來(lái)模擬。也就是說(shuō)我們不依賴(lài)真實(shí)的后端服務(wù)先在apifox里把一個(gè)“假接口”造出來(lái)再讓前端頁(yè)面真實(shí)地請(qǐng)求它、拿到返回結(jié)果。整個(gè)過(guò)程完全可以在一臺(tái)電腦上復(fù)現(xiàn)適合剛學(xué)完前端基礎(chǔ)、想搞明白前后端聯(lián)調(diào)是怎么回事的讀者。1. 動(dòng)手前的思路拆解注冊(cè)頁(yè)面為什么值得認(rèn)真做1.1 注冊(cè)功能的前后端協(xié)作邏輯注冊(cè)頁(yè)面的本質(zhì)是用戶(hù)在瀏覽器里填寫(xiě)信息前端收集并校驗(yàn)這些信息然后通過(guò)網(wǎng)絡(luò)請(qǐng)求提交給服務(wù)器服務(wù)器處理完后返回一個(gè)結(jié)果前端再根據(jù)這個(gè)結(jié)果決定下一步動(dòng)作。這一來(lái)一回就是一次完整的前后端交互。拆開(kāi)看它包含三個(gè)核心角色前端頁(yè)面負(fù)責(zé)信息采集、格式校驗(yàn)、請(qǐng)求發(fā)送、響應(yīng)渲染。網(wǎng)絡(luò)協(xié)議用HTTP協(xié)議里的POST方法把數(shù)據(jù)放在請(qǐng)求體里傳給服務(wù)器。后端接口接收參數(shù)、校驗(yàn)數(shù)據(jù)、落庫(kù)最后返回成功或失敗的JSON數(shù)據(jù)。這里面容易忽略的是角色邊界。很多新手寫(xiě)注冊(cè)頁(yè)習(xí)慣在前端把密碼強(qiáng)度、手機(jī)號(hào)格式全校驗(yàn)完了就以為萬(wàn)事大吉。但真實(shí)的后端接口同樣會(huì)做一套完整的校驗(yàn)。前端校驗(yàn)是為了用戶(hù)體驗(yàn)后端校驗(yàn)才是為了安全和數(shù)據(jù)可靠。apifox模擬接口的時(shí)候我們可以通過(guò)Mock規(guī)則簡(jiǎn)單模擬這一層校驗(yàn)比如約定用戶(hù)名長(zhǎng)度、密碼位數(shù)不符合規(guī)則就返回錯(cuò)誤碼。理解了這個(gè)角色劃分后面所有的代碼寫(xiě)起來(lái)思路都會(huì)清晰很多。1.2 為什么選apifox做模擬接口說(shuō)實(shí)話能模擬接口的工具不少Postman、Apifox、YApi、Rap2都干得動(dòng)這件事。我選擇apifox主要是因?yàn)樗诮涌诠芾?、Mock數(shù)據(jù)、文檔生成、本地調(diào)試這幾個(gè)環(huán)節(jié)上做得足夠一體化對(duì)個(gè)人開(kāi)發(fā)者和前端初學(xué)者尤其友好。apifox的核心邏輯是“先定義接口再生成數(shù)據(jù)”。你在界面里把接口的路徑、請(qǐng)求方法、請(qǐng)求參數(shù)、返回?cái)?shù)據(jù)結(jié)構(gòu)定義好它可以自動(dòng)生成一份可訪問(wèn)的Mock接口地址。前端拿著這個(gè)地址就能發(fā)請(qǐng)求。這比傳統(tǒng)方式省事在什么地方呢傳統(tǒng)方式去搭建一個(gè)真實(shí)的Node.js或Java后端光配置環(huán)境、寫(xiě)接口邏輯就得占掉大半時(shí)間對(duì)只想練前端的人來(lái)說(shuō)負(fù)擔(dān)太重。apifox把這個(gè)過(guò)程壓縮到了幾分鐘。另外apifox可以在定義接口時(shí)就確定好字段名和字段類(lèi)型這相當(dāng)于提前和“后端”約定了數(shù)據(jù)格式。很多前端開(kāi)發(fā)中的聯(lián)調(diào)沖突根源就是字段名沒(méi)商量好——前端傳username后端要userName前端傳phone后端要mobile類(lèi)型也對(duì)不上排查起來(lái)極其耗費(fèi)時(shí)間。用apifox先定義等于先把契約固定下來(lái)。1.3 為什么用axios而不是fetch瀏覽器原生提供了fetch方法一樣可以發(fā)請(qǐng)求那為什么還要額外引入axios如果你只是發(fā)一次簡(jiǎn)單的GET請(qǐng)求兩者區(qū)別不大。但是注冊(cè)功能涉及請(qǐng)求攔截、響應(yīng)攔截、超時(shí)設(shè)置、錯(cuò)誤處理、統(tǒng)一加headers這些需求axios把這些問(wèn)題全部封裝成了簡(jiǎn)潔的API寫(xiě)起來(lái)更直觀心智負(fù)擔(dān)小得多。舉個(gè)例子頁(yè)面里可能會(huì)給每個(gè)請(qǐng)求統(tǒng)一加上一個(gè)token字段或者統(tǒng)一處理HTTP狀態(tài)碼401的情況。用fetch你得每個(gè)請(qǐng)求都寫(xiě)一遍處理邏輯或者自己封裝一層工具函數(shù)。而axios有攔截器機(jī)制可以在請(qǐng)求發(fā)出前統(tǒng)一處理在響應(yīng)回來(lái)后統(tǒng)一處理錯(cuò)誤代碼復(fù)用性明顯更好。axios基于XMLHttpRequest這在兼容性上也有天然優(yōu)勢(shì)老版本瀏覽器也能用。fetch雖然是標(biāo)準(zhǔn)API但對(duì)一些老環(huán)境的支持要打折扣新手調(diào)起來(lái)容易踩坑。既然要做一個(gè)“拿來(lái)就能用”的注冊(cè)頁(yè)面axios顯然更合適。2. 用apifox先把“假后端”搭起來(lái)2.1 創(chuàng)建項(xiàng)目與接口定義第一次打開(kāi)apifox會(huì)看到幾個(gè)內(nèi)置示例項(xiàng)目。我建議你別直接用示例而是新建一個(gè)空項(xiàng)目命名成“注冊(cè)模塊demo”從零開(kāi)始定義接口這樣對(duì)接口結(jié)構(gòu)的印象更深刻。新建項(xiàng)目之后在左側(cè)“接口管理”里添加一個(gè)接口。關(guān)鍵配置如下請(qǐng)求方法POST路徑/api/register接口名稱(chēng)用戶(hù)注冊(cè)這里要多說(shuō)一句路徑的命名規(guī)范。很多新手隨手寫(xiě)一個(gè)/register就完事了但在真實(shí)項(xiàng)目里接口路徑通常會(huì)帶上前綴比如/api代表這是后端接口有的項(xiàng)目還會(huì)帶版本號(hào)/v1。這不是形式主義而是為了后續(xù)維護(hù)方便。前端代碼里寫(xiě)死路徑之后如果后端調(diào)整了前綴你只需要在axios的baseURL里統(tǒng)一改不用去頁(yè)面里一個(gè)個(gè)找這個(gè)設(shè)計(jì)習(xí)慣建議從一開(kāi)始就養(yǎng)成。HTTP方法的選擇也值得講清楚。GET和POST雖然都能把數(shù)據(jù)傳給服務(wù)器但語(yǔ)義完全不同。GET適合獲取數(shù)據(jù)參數(shù)拼在URL后面會(huì)被瀏覽器記錄進(jìn)歷史、被服務(wù)器記進(jìn)日志數(shù)據(jù)裸奔且長(zhǎng)度受限。POST適合提交數(shù)據(jù)參數(shù)放在請(qǐng)求體里相對(duì)隱蔽長(zhǎng)度限制也寬松很多。注冊(cè)這種場(chǎng)景用戶(hù)名、密碼、手機(jī)號(hào)都屬于敏感信息用POST是必然選擇。2.2 配置請(qǐng)求參數(shù)與Mock返回規(guī)則切換到“Body”標(biāo)簽頁(yè)選擇JSON格式定義請(qǐng)求體參數(shù)。我這次設(shè)計(jì)注冊(cè)功能需要三個(gè)核心字段{ username: zhangsan, password: abc123456, email: zhangsanexample.com }這個(gè)JSON結(jié)構(gòu)就是我們和“后端”約定的請(qǐng)求格式。注意字段風(fēng)格這里用的是小駝峰命名。曾經(jīng)有團(tuán)隊(duì)前端用user_name、后端用userName聯(lián)調(diào)時(shí)查了半天才發(fā)現(xiàn)是字段名對(duì)不上。所以字段命名雖然小事但最好在接口定義階段就統(tǒng)一好。返回?cái)?shù)據(jù)同樣用JSON定義。我計(jì)劃讓接口在成功時(shí)返回這樣的結(jié)構(gòu){ code: 200, message: 注冊(cè)成功, data: { userId: 1001 } }失敗時(shí)返回{ code: 400, message: 用戶(hù)名已存在, data: null }很多同學(xué)看到這里會(huì)問(wèn)直接用HTTP狀態(tài)碼不就行了為什么還要在JSON里放一個(gè)code字段這個(gè)問(wèn)題問(wèn)得很好。真實(shí)項(xiàng)目里確實(shí)存在這種雙軌并行的設(shè)計(jì)HTTP狀態(tài)碼是傳輸層的狀態(tài)標(biāo)識(shí)而業(yè)務(wù)code是業(yè)務(wù)邏輯的狀態(tài)標(biāo)識(shí)。比如接口通了但用戶(hù)名重復(fù)HTTP狀態(tài)碼可能是200請(qǐng)求本身成功了但業(yè)務(wù)層通過(guò)code400告訴你“注冊(cè)沒(méi)成功”。前端拿到響應(yīng)后不能只看HTTP狀態(tài)碼更要看業(yè)務(wù)code。這個(gè)習(xí)慣越早建立后面看真實(shí)接口越不吃力。apifox的Mock規(guī)則能幫你做一件事定義好返回?cái)?shù)據(jù)的格式后它會(huì)在你發(fā)請(qǐng)求時(shí)根據(jù)字段類(lèi)型自動(dòng)生成模擬數(shù)據(jù)。不一定需要手動(dòng)設(shè)置太復(fù)雜的動(dòng)態(tài)規(guī)則直接用靜態(tài)示例值也行夠前端聯(lián)調(diào)用了。2.3 本地Mock服務(wù)的啟動(dòng)與調(diào)試apifox有一個(gè)殺手級(jí)功能一鍵啟動(dòng)本地Mock服務(wù)。它會(huì)在你的電腦上開(kāi)一個(gè)本地服務(wù)地址類(lèi)似http://127.0.0.1:4523/m1/123456。這個(gè)地址就是我們可以直接請(qǐng)求的接口地址。為什么需要本地Mock服務(wù)而不是直接用apifox網(wǎng)頁(yè)提供的臨時(shí)Mock地址因?yàn)楸镜胤?wù)啟動(dòng)后前端axios請(qǐng)求本地地址不用走公網(wǎng)速度更快而且不會(huì)遇到公網(wǎng)Mock地址在某些網(wǎng)絡(luò)環(huán)境下的穩(wěn)定性問(wèn)題。調(diào)試體驗(yàn)和真實(shí)聯(lián)調(diào)非常接近。啟動(dòng)之后打開(kāi)瀏覽器訪問(wèn)一下接口地址或者直接在apifox里點(diǎn)“發(fā)送”就能看到模擬的返回結(jié)果。這個(gè)步驟很重要相當(dāng)于先確認(rèn)“假后端”沒(méi)死再去寫(xiě)前端代碼。我見(jiàn)過(guò)太多同學(xué)前端代碼寫(xiě)了一大堆回頭發(fā)現(xiàn)接口地址配錯(cuò)了排查了半天浪費(fèi)大量時(shí)間。另外apifox里還可以配置環(huán)境變量。比如你可以創(chuàng)建“本地環(huán)境”和“測(cè)試環(huán)境”兩組變量把不同的Mock地址分別存好。axios的baseURL讀取環(huán)境變量以后切換環(huán)境只需要在apifox里切換前端代碼完全不用動(dòng)。雖然是模擬階段但這套思路和真實(shí)項(xiàng)目里的環(huán)境管理是一脈相承的。3. 注冊(cè)頁(yè)面代碼實(shí)現(xiàn)寫(xiě)一個(gè)真正能用的表單3.1 HTML結(jié)構(gòu)設(shè)計(jì)頁(yè)面要簡(jiǎn)潔但簡(jiǎn)潔不等于簡(jiǎn)陋。設(shè)計(jì)目標(biāo)是信息清晰、操作路徑短、視覺(jué)干凈。表單包含四個(gè)元素用戶(hù)名輸入框、密碼輸入框、郵箱輸入框、注冊(cè)按鈕。!DOCTYPE html html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title用戶(hù)注冊(cè)/title link relstylesheet href./style.css /head body div classregister-container h2創(chuàng)建賬號(hào)/h2 p classsubtitle只需填寫(xiě)以下信息即可完成注冊(cè)/p form idregisterForm div classform-item label forusername用戶(hù)名/label input typetext idusername nameusername placeholder請(qǐng)輸入用戶(hù)名 autocompleteusername /div div classform-item label forpassword密碼/label input typepassword idpassword namepassword placeholder請(qǐng)輸入密碼 autocompletenew-password /div div classform-item label foremail郵箱/label input typeemail idemail nameemail placeholder請(qǐng)輸入郵箱 autocompleteemail /div button typesubmit idregisterBtn注 冊(cè)/button /form p idmessage classmessage/p /div script srchttps://cdn.jsdelivr.net/npm/axios1.6.0/dist/axios.min.js/script script src./register.js/script /body /html幾個(gè)細(xì)節(jié)說(shuō)說(shuō)為什么這么寫(xiě)。輸入框的autocomplete屬性容易被忽略。這個(gè)屬性控制瀏覽器要不要自動(dòng)填充歷史輸入值。注冊(cè)頁(yè)面的密碼框如果填了new-password瀏覽器就不會(huì)把之前登錄過(guò)的密碼自動(dòng)帶出來(lái)這對(duì)用戶(hù)來(lái)說(shuō)是正常體驗(yàn)。很多注冊(cè)頁(yè)密碼自動(dòng)被瀏覽器的老密碼覆蓋用戶(hù)自己都不知道輸了一堆以為是對(duì)的結(jié)果提交一直失敗這個(gè)坑就是沒(méi)設(shè)置autocomplete導(dǎo)致的。typeemail也是同理它不光是前端樣式上有區(qū)別移動(dòng)端會(huì)彈出對(duì)應(yīng)鍵盤(pán)瀏覽器還會(huì)做基礎(chǔ)格式校驗(yàn)。這個(gè)校驗(yàn)雖然在后端面前不值一提但對(duì)用戶(hù)體驗(yàn)來(lái)說(shuō)是一個(gè)低成本的正向反饋。form標(biāo)簽里沒(méi)有加action屬性也沒(méi)有method屬性。因?yàn)檫@次我們不打算走傳統(tǒng)表單的同步提交方式而是由JavaScript攔截submit事件用axios異步發(fā)送請(qǐng)求。如果這里寫(xiě)了actionhttp://127.0.0.1:4523/m1/xxx用戶(hù)點(diǎn)擊注冊(cè)按鈕后瀏覽器會(huì)直接跳轉(zhuǎn)到接口地址頁(yè)面刷新體驗(yàn)非常糟糕。所以明確一點(diǎn)使用axios異步請(qǐng)求時(shí)表單的同步提交行為要禁掉。3.2 CSS樣式與交互細(xì)節(jié)樣式不追求花哨但要有最基本的視覺(jué)反饋。我盡量控制在60行以?xún)?nèi)的核心樣式* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Microsoft YaHei, sans-serif; background: #f5f6fa; display: flex; justify-content: center; align-items: center; min-height: 100vh; } .register-container { background: #ffffff; padding: 40px 48px; border-radius: 12px; box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08); width: 400px; } .register-container h2 { font-size: 24px; color: #333333; text-align: center; margin-bottom: 6px; } .subtitle { text-align: center; color: #888888; font-size: 14px; margin-bottom: 28px; } .form-item { margin-bottom: 20px; } .form-item label { display: block; font-size: 14px; color: #555555; margin-bottom: 8px; font-weight: 500; } .form-item input { width: 100%; padding: 10px 14px; border: 1px solid #dddddd; border-radius: 8px; font-size: 14px; outline: none; transition: border-color 0.2s ease; } .form-item input:focus { border-color: #4a7aff; box-shadow: 0 0 0 3px rgba(74, 122, 255, 0.1); } #registerBtn { width: 100%; padding: 11px 0; border: none; border-radius: 8px; background: #4a7aff; color: #ffffff; font-size: 16px; font-weight: 500; cursor: pointer; transition: background-color 0.2s ease; margin-top: 8px; } #registerBtn:hover { background: #3867d6; } #registerBtn:disabled { background: #a0b4f0; cursor: not-allowed; } .message { margin-top: 16px; text-align: center; font-size: 14px; min-height: 20px; } .message.success { color: #07a35a; } .message.error { color: #e04b4b; }這里面有兩個(gè)交互細(xì)節(jié)值得展開(kāi)。輸入框的:focus狀態(tài)加了邊框變色和一圈淡藍(lán)色光暈這能直觀告訴用戶(hù)“當(dāng)前光標(biāo)在這個(gè)輸入框里”。沒(méi)有焦點(diǎn)反饋的表單用戶(hù)在填多個(gè)字段時(shí)很容易迷失尤其是一次性就要填好幾項(xiàng)信息的時(shí)候。按鈕的:disabled樣式對(duì)應(yīng)的是“防止重復(fù)提交”邏輯。用戶(hù)點(diǎn)了一次注冊(cè)后在請(qǐng)求返回之前按鈕會(huì)被置為禁用狀態(tài)等返回結(jié)果后再恢復(fù)。如果沒(méi)有這層控制手快的用戶(hù)連續(xù)點(diǎn)擊五六次頁(yè)面會(huì)發(fā)出好幾個(gè)相同的注冊(cè)請(qǐng)求后端可能創(chuàng)建多個(gè)賬號(hào)也可能因?yàn)椴l(fā)問(wèn)題報(bào)錯(cuò)。這個(gè)防抖操作是真實(shí)項(xiàng)目里前端必做的基本功。3.3 前端校驗(yàn)規(guī)則前端校驗(yàn)的作用是提前攔截明顯不合理的輸入讓用戶(hù)立刻改正而不是等到請(qǐng)求發(fā)出去再等后端打回來(lái)。這次設(shè)計(jì)三個(gè)字段的校驗(yàn)規(guī)則用戶(hù)名2到16個(gè)字符不能包含特殊字符。密碼6到20個(gè)字符必須同時(shí)包含字母和數(shù)字。郵箱符合基本的郵箱格式。function validateForm(formData) { const username formData.get(username).trim(); const password formData.get(password).trim(); const email formData.get(email).trim(); if (username.length 2 || username.length 16) { return 用戶(hù)名長(zhǎng)度應(yīng)在2到16個(gè)字符之間; } if (!/^[a-zA-Z0-9_\u4e00-\u9fa5]$/.test(username)) { return 用戶(hù)名只能包含字母、數(shù)字、下劃線或中文; } if (password.length 6 || password.length 20) { return 密碼長(zhǎng)度應(yīng)在6到20個(gè)字符之間; } if (!/[a-zA-Z]/.test(password) || !/[0-9]/.test(password)) { return 密碼必須同時(shí)包含字母和數(shù)字; } if (!/^[^\s][^\s]\.[^\s]$/.test(email)) { return 郵箱格式不正確; } return null; }用正則做用戶(hù)名和密碼校驗(yàn)是效率最高的方式。密碼復(fù)雜度要求聽(tīng)起來(lái)簡(jiǎn)單但用正則實(shí)現(xiàn)時(shí)一定要拆開(kāi)看先校驗(yàn)長(zhǎng)度再分別判斷是否包含字母和數(shù)字而不是用一個(gè)大正則一步到位。大正則看著唬人但報(bào)錯(cuò)信息沒(méi)法細(xì)致區(qū)分“長(zhǎng)度不夠”和“缺數(shù)字”而在實(shí)際使用中用戶(hù)最需要的是明確的提示哪個(gè)規(guī)則沒(méi)滿(mǎn)足你直接告訴他就行。順便說(shuō)一句正則這事。很多人一看到正則就頭疼覺(jué)得難記。我的經(jīng)驗(yàn)是把常用的幾個(gè)正則存成自己的代碼片段庫(kù)手機(jī)號(hào)、郵箱、身份證、純數(shù)字、純字母以后哪里用到直接復(fù)制再微調(diào)??磕X子硬背正則性?xún)r(jià)比太低。3.4 axios封裝與請(qǐng)求配置axios的使用分兩種層次一種是直接在頁(yè)面里axios.post(url, data)一把梭另一種是封裝一個(gè)實(shí)例統(tǒng)一配置baseURL、超時(shí)時(shí)間、攔截器。這個(gè)項(xiàng)目雖然只有一個(gè)接口我更建議直接按第二種方式來(lái)寫(xiě)因?yàn)橐院蠼诱鎸?shí)項(xiàng)目的時(shí)候無(wú)非就是把Mock地址換成線上地址其余代碼幾乎不用改。先看封裝部分的代碼const request axios.create({ baseURL: http://127.0.0.1:4523/m1/3956000, timeout: 10000, headers: { Content-Type: application/json } }); request.interceptors.request.use(config { console.log(請(qǐng)求發(fā)出, config); return config; }, error { return Promise.reject(error); }); request.interceptors.response.use(response { const res response.data; if (res.code ! 200) { return Promise.reject(new Error(res.message || 請(qǐng)求失敗)); } return res; }, error { return Promise.reject(error); });這里要重點(diǎn)說(shuō)兩個(gè)概念。baseURL的作用是給所有請(qǐng)求路徑加前綴。后面發(fā)起request.post(/api/register)的時(shí)候?qū)嶋H請(qǐng)求的完整地址就是http://127.0.0.1:4523/m1/3956000/api/register。這樣做的好處是當(dāng)接口地址整體遷移時(shí)只改這一個(gè)變量就行。開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境的baseURL不同通過(guò)環(huán)境變量動(dòng)態(tài)切換即可不用動(dòng)業(yè)務(wù)代碼。headers里的Content-Type決定了請(qǐng)求體以什么格式傳輸。這里用的是application/json對(duì)應(yīng)的是axios把JS對(duì)象轉(zhuǎn)換成JSON字符串放在請(qǐng)求體里。還有一種常見(jiàn)格式是application/x-www-form-urlencoded那是把數(shù)據(jù)編碼成usernamexxxpasswordxxx的鍵值對(duì)形式。這兩種格式各有用武之地但在RESTful API設(shè)計(jì)里JSON是默認(rèn)選擇。因?yàn)镴SON結(jié)構(gòu)清晰、支持嵌套后端解析也方便。如果你用axios默認(rèn)的POST請(qǐng)求且傳入的是對(duì)象axios會(huì)自動(dòng)幫你轉(zhuǎn)成JSON格式但你最好還是顯式聲明一下避免有些環(huán)境下因?yàn)闆](méi)有正確設(shè)置Content-Type導(dǎo)致后端拿到的是空數(shù)據(jù)。再看看注冊(cè)頁(yè)面自己的邏輯層const form document.getElementById(registerForm); const messageEl document.getElementById(message); const registerBtn document.getElementById(registerBtn); form.addEventListener(submit, async function (event) { event.preventDefault(); const formData new FormData(form); const formDataObj { username: formData.get(username).trim(), password: formData.get(password).trim(), email: formData.get(email).trim() }; const validateMsg validateForm(formData); if (validateMsg) { showMessage(validateMsg, error); return; } registerBtn.disabled true; registerBtn.textContent 注冊(cè)中...; try { const res await request.post(/api/register, formDataObj); if (res.code 200) { showMessage(注冊(cè)成功, success); } } catch (err) { showMessage(err.message || 網(wǎng)絡(luò)異常請(qǐng)稍后重試, error); } finally { registerBtn.disabled false; registerBtn.textContent 注 冊(cè); } }); function showMessage(text, type) { messageEl.textContent text; messageEl.className message type; }這里有幾個(gè)關(guān)鍵點(diǎn)值得反復(fù)強(qiáng)調(diào)。event.preventDefault()是表單處理里最容易漏的一行代碼。表單默認(rèn)行為是提交后刷新頁(yè)面如果你沒(méi)攔住這個(gè)默認(rèn)行為axios的異步請(qǐng)求剛發(fā)出去頁(yè)面立刻刷新了結(jié)果什么都看不到。很多新手排了很久的錯(cuò)最后發(fā)現(xiàn)就是少了這一行。按鈕的狀態(tài)切換放在請(qǐng)求前和請(qǐng)求后。這不是可有可無(wú)的錦上添花而是絕對(duì)必要的交互控制。請(qǐng)求期間用戶(hù)連續(xù)點(diǎn)擊會(huì)產(chǎn)生重復(fù)注冊(cè)的請(qǐng)求輕則后端多創(chuàng)建賬號(hào)重則觸發(fā)并發(fā)沖突。用一個(gè)簡(jiǎn)單的disabled狀態(tài)就能在純前端層面把這個(gè)風(fēng)險(xiǎn)降到最低。try...catch...finally的結(jié)構(gòu)是異步編程的黃金組合。try里放正常請(qǐng)求流程catch捕獲請(qǐng)求失敗或業(yè)務(wù)失敗finally保證無(wú)論結(jié)果如何都要恢復(fù)按鈕狀態(tài)。還有一點(diǎn)攔截器里已經(jīng)把code ! 200的情況通過(guò)Promise.reject拋出來(lái)了所以在catch里拿到的err.message就是后端返回的業(yè)務(wù)錯(cuò)誤信息用戶(hù)能看到“用戶(hù)名已存在”這樣有意義的提示而不是冷冰冰的“Network Error”。4. 聯(lián)調(diào)實(shí)戰(zhàn)從頁(yè)面到接口的完整請(qǐng)求鏈路4.1 axios實(shí)例配置與POST調(diào)用實(shí)戰(zhàn)到這里前端的靜態(tài)頁(yè)面和apifox里的假后端都已經(jīng)就緒了。打開(kāi)HTML頁(yè)面填入信息點(diǎn)擊注冊(cè)。這瞬間發(fā)生了什么我按時(shí)間線拆解瀏覽器攔截表單默認(rèn)提交行為。執(zhí)行前端校驗(yàn)函數(shù)通過(guò)后繼續(xù)。axios實(shí)例創(chuàng)建POST請(qǐng)求URL拼接為http://127.0.0.1:4523/m1/3956000/api/register。設(shè)置請(qǐng)求頭Content-Type: application/json。請(qǐng)求體序列化為{username:zhangsan,password:abc123456,email:zhangsanexample.com}。瀏覽器發(fā)送請(qǐng)求到本地Mock服務(wù)。apifox服務(wù)端匹配到接口定義執(zhí)行數(shù)據(jù)校驗(yàn)。返回JSON響應(yīng)到前端。axios響應(yīng)攔截器拿到數(shù)據(jù)判斷業(yè)務(wù)code。頁(yè)面根據(jù)結(jié)果展示成功或失敗信息。這條鏈路里每一步的職責(zé)都很單一任何一個(gè)環(huán)節(jié)出問(wèn)題都有明確的排查方向。比如前端校驗(yàn)沒(méi)通過(guò)請(qǐng)求根本不會(huì)發(fā)出如果請(qǐng)求發(fā)出去了但沒(méi)返回問(wèn)題在接口或網(wǎng)絡(luò)層如果返回了但頁(yè)面沒(méi)反應(yīng)問(wèn)題在響應(yīng)處理邏輯。4.2 前端收到的響應(yīng)長(zhǎng)什么樣用瀏覽器的開(kāi)發(fā)者工具切到Network標(biāo)簽頁(yè)點(diǎn)一下注冊(cè)按鈕能看到一條名為register的請(qǐng)求記錄。點(diǎn)開(kāi)它可以看到請(qǐng)求詳情Headers里就是Content-Type、User-Agent這些Payload里就是請(qǐng)求體JSONResponse里就是接口返回的JSON。這一步建議每個(gè)讀者都親自做一次親眼看一遍比看十篇教程都管用。響應(yīng)體長(zhǎng)這樣{ code: 200, message: 注冊(cè)成功, data: { userId: 1001 } }前端拿到這個(gè)JSON后響應(yīng)攔截器判斷code 200于是整個(gè)請(qǐng)求流程走成功分支頁(yè)面顯示綠色“注冊(cè)成功”文案。如果不滿(mǎn)足注冊(cè)條件比如用戶(hù)名已經(jīng)存在apifox按Mock規(guī)則返回code: 400響應(yīng)攔截器發(fā)現(xiàn)業(yè)務(wù)code不對(duì)直接reject一個(gè)Error錯(cuò)誤信息被catch捕獲頁(yè)面顯示紅色錯(cuò)誤提示。這個(gè)過(guò)程沒(méi)有刷新頁(yè)面但有完整的成功和失敗反饋這就是前后端分離結(jié)構(gòu)下典型的交互方式。4.3 調(diào)試過(guò)程中網(wǎng)絡(luò)面板的使用Network面板是聯(lián)調(diào)時(shí)最重要的工具沒(méi)有之一。我來(lái)說(shuō)說(shuō)怎么看它。打開(kāi)面板后先清空之前的日志再操作頁(yè)面這樣面板里只保留你這次操作產(chǎn)生的請(qǐng)求線索不會(huì)被歷史請(qǐng)求干擾。然后看三條信息Status CodeHTTP狀態(tài)碼200代表請(qǐng)求到達(dá)了接口并正常返回404是路徑?jīng)]匹配上500是服務(wù)端內(nèi)部出錯(cuò)了。Request Payload確認(rèn)請(qǐng)求體里的數(shù)據(jù)格式和值很多聯(lián)調(diào)問(wèn)題都出在這一步比如字段名拼錯(cuò)了、傳了undefined。Response確認(rèn)返回?cái)?shù)據(jù)和預(yù)期是否一致。有一類(lèi)很詭異的問(wèn)題頁(yè)面明明顯示請(qǐng)求失敗了但面板里Response看起來(lái)是正常的。這種情況十有八九是響應(yīng)攔截器里做了特殊判斷把業(yè)務(wù)code非200的情況當(dāng)成了錯(cuò)誤拋出。所以看問(wèn)題要把前后端連起來(lái)看不能只看一頭。5. 踩坑記錄與排查思路合集5.1 請(qǐng)求能發(fā)出但Status Code是404404是路徑問(wèn)題。在Network面板里看請(qǐng)求URL和apifox接口定義里的路徑比對(duì)是不是漏了/api前綴或者是mock服務(wù)地址的路徑段不對(duì)。apifox本地服務(wù)的完整路徑包含項(xiàng)目標(biāo)識(shí)如果復(fù)制的時(shí)候漏掉了一段就會(huì)出現(xiàn)404。這里我建議養(yǎng)成一個(gè)習(xí)慣字不要手打全部從apifox里復(fù)制。人眼識(shí)別地址里的數(shù)字段很容易出錯(cuò)復(fù)制粘貼能規(guī)避大部分這類(lèi)低級(jí)問(wèn)題。5.2 請(qǐng)求發(fā)出后Response是CORS error跨域問(wèn)題是本地聯(lián)調(diào)最常見(jiàn)的一道坎。頁(yè)面文件在file://協(xié)議下打開(kāi)或者前端用的是某個(gè)本地端口而接口服務(wù)在另一個(gè)端口瀏覽器的同源策略就會(huì)攔截響應(yīng)。解決辦法有兩個(gè)方向。一是在前端啟動(dòng)一個(gè)本地開(kāi)發(fā)服務(wù)器比如用VSCode的Live Server插件把頁(yè)面跑起來(lái)這樣前端來(lái)自http://127.0.0.1:5500請(qǐng)求http://127.0.0.1:4523就屬于跨域。二是去apifox的Mock服務(wù)設(shè)置里找到CORS相關(guān)配置把允許跨域打開(kāi)。需要注意的是如果你直接雙擊HTML文件用file://方式打開(kāi)NetWork面板里request可能顯示為(cors)或(failed)這是瀏覽器的硬限制。我個(gè)人的習(xí)慣是所有前端聯(lián)調(diào)一律用Live Server這種本地服務(wù)方式跑起來(lái)和線上環(huán)境更接近也少踩很多莫名其妙的錯(cuò)。5.3 apifox發(fā)送成功但前端一直請(qǐng)求失敗可以先確認(rèn)一下apifox里發(fā)送測(cè)試是否正常。如果apifox本身能正常返回說(shuō)明接口定義沒(méi)問(wèn)題問(wèn)題出在前端到接口之間的鏈路上。常見(jiàn)情況是你用的是apifox云端Mock地址但這個(gè)接口默認(rèn)需要鑒權(quán)沒(méi)有帶token所以被拒了。我剛才寫(xiě)的代碼里就沒(méi)有處理鑒權(quán)所以這里有個(gè)重要提醒如果apifox創(chuàng)建的項(xiàng)目開(kāi)啟了“接口鑒權(quán)”功能前端請(qǐng)求會(huì)收到401或403。解決方式是在apifox的項(xiàng)目設(shè)置里關(guān)閉鑒權(quán)或者在前端請(qǐng)求中加上對(duì)應(yīng)的鑒權(quán)頭。初學(xué)者做模擬聯(lián)調(diào)建議直接關(guān)掉鑒權(quán)避免在非核心問(wèn)題上耗費(fèi)時(shí)間。5.4 表單重置問(wèn)題注冊(cè)成功后表單數(shù)據(jù)沒(méi)有清空這雖然不影響功能但體驗(yàn)上差了點(diǎn)。真實(shí)項(xiàng)目里注冊(cè)成功后一般會(huì)跳轉(zhuǎn)到登錄頁(yè)或首頁(yè)所以表單清不清空影響不大。但如果你做了一個(gè)單頁(yè)demo希望在注冊(cè)成功后清空表單只需要在成功分支里調(diào)用form.reset()就行。放在成功分支而不是finally里是怕請(qǐng)求失敗時(shí)把用戶(hù)填好的信息清掉那就得不償失了。5.5 字段名或數(shù)據(jù)類(lèi)型不一致前端傳字符串后端要數(shù)字或者前端傳userName后端要username。這種問(wèn)題在聯(lián)調(diào)里極其常見(jiàn)有時(shí)候能折磨人一下午。規(guī)避的辦法就是在apifox定義接口時(shí)把字段名和類(lèi)型固定好前端代碼嚴(yán)格對(duì)照接口文檔來(lái)寫(xiě)。記住apifox里定義的請(qǐng)求參數(shù)就是事實(shí)標(biāo)準(zhǔn)前端照著抄不要發(fā)揮創(chuàng)造力。我見(jiàn)過(guò)有同學(xué)把email寫(xiě)成mail接口一下子返回參數(shù)缺失這就是典型的低級(jí)錯(cuò)誤但也只有靠細(xì)心才能完全避免。6. 進(jìn)階擴(kuò)展注冊(cè)頁(yè)面還能怎么變得更強(qiáng)6.1 添加Loading狀態(tài)與按鈕防重復(fù)提交按鈕防重復(fù)提交我在上面的代碼里已經(jīng)寫(xiě)了但如果你追求更好一點(diǎn)的體驗(yàn)還可以把按鈕上的文字改成帶動(dòng)畫(huà)的加載狀態(tài)。最簡(jiǎn)單的做法是給按鈕加一個(gè)CSS類(lèi)里面放一段旋轉(zhuǎn)的邊框動(dòng)畫(huà)視覺(jué)上告訴用戶(hù)“請(qǐng)求正在路上”。還有一種更細(xì)膩的狀態(tài)處理根據(jù)請(qǐng)求結(jié)果給按鈕設(shè)置不同的文案。請(qǐng)求中顯示“提交中...”成功后可以短暫顯示“注冊(cè)成功”再跳轉(zhuǎn)失敗則恢復(fù)原樣。這些細(xì)節(jié)單獨(dú)看不值錢(qián)但組合起來(lái)用戶(hù)的感受完全是兩個(gè)檔次。6.2 密碼加密與安全策略我在demo里直接明文傳輸密碼這對(duì)模擬項(xiàng)目沒(méi)有影響但到了真實(shí)項(xiàng)目里是絕對(duì)不行的。前端在發(fā)送密碼之前至少要用HTTPS保證傳輸安全更進(jìn)一步可以在前端對(duì)密碼做哈希處理后再發(fā)送。當(dāng)然哈希算法有很多細(xì)節(jié)什么加鹽、什么算法選擇屬于安全領(lǐng)域的專(zhuān)門(mén)知識(shí)這里提出來(lái)是希望大家有這個(gè)意識(shí)不要以為JSON提交就萬(wàn)事大吉了。實(shí)際項(xiàng)目中前端做哈希處理是一種常見(jiàn)做法但要注意后端必須明確知道前端傳過(guò)來(lái)的是哈希值還是原文要有對(duì)應(yīng)的方案來(lái)配合處理避免前后端各自為政最后兩邊擰巴。6.3 增加圖形驗(yàn)證碼這是現(xiàn)實(shí)中注冊(cè)功能幾乎必備的環(huán)節(jié)目的是防止機(jī)器人批量注冊(cè)。圖形驗(yàn)證碼的實(shí)現(xiàn)牽扯到后端生成圖片、前端顯示圖片、校驗(yàn)邏輯等好幾個(gè)環(huán)節(jié)代碼量會(huì)成倍增加。用apifox模擬圖形驗(yàn)證碼接口可以定義兩個(gè)接口一個(gè)獲取驗(yàn)證碼圖片一個(gè)校驗(yàn)驗(yàn)證碼。前端把用戶(hù)填的驗(yàn)證碼和注冊(cè)信息一起提交由“后端”驗(yàn)證。這個(gè)擴(kuò)展非常推薦在掌握基本注冊(cè)流程后再做因?yàn)樗牧鞒谈暾哺咏鎸?shí)業(yè)務(wù)場(chǎng)景。6.4 表單狀態(tài)管理如果使用了Vue或React注冊(cè)表單的狀態(tài)管理可以更進(jìn)一步。以Vue為例用reactive定義表單數(shù)據(jù)watch監(jiān)聽(tīng)字段變化實(shí)時(shí)校驗(yàn)computed根據(jù)表單整體合法性控制按鈕可用狀態(tài)。這套組合拳能讓交互反饋更即時(shí)用戶(hù)不用等到點(diǎn)擊按鈕才知道哪里填錯(cuò)了。不過(guò)我的建議是用原生JavaScript完整實(shí)現(xiàn)一遍注冊(cè)頁(yè)之前不要急著上框架。原生的實(shí)現(xiàn)過(guò)程會(huì)把請(qǐng)求鏈路、DOM操作、事件處理的每個(gè)細(xì)節(jié)都暴露在你面前這些經(jīng)驗(yàn)在框架里會(huì)被隱藏得很好但對(duì)理解系統(tǒng)本質(zhì)極為關(guān)鍵。寫(xiě)在最后注冊(cè)頁(yè)面看起來(lái)是前端入門(mén)的小項(xiàng)目但它的價(jià)值在于把“用戶(hù)交互、前端校驗(yàn)、網(wǎng)絡(luò)請(qǐng)求、接口模擬、異常處理”這條完整的鏈路串了起來(lái)。我個(gè)人折騰這個(gè)demo時(shí)最大的體會(huì)是其實(shí)難的不是某個(gè)具體技術(shù)點(diǎn)而是搞清楚“誰(shuí)負(fù)責(zé)什么、數(shù)據(jù)從哪來(lái)、到哪里去、每一步失敗在哪里”。當(dāng)你用apifool把后端接口提前定義好再回頭看前端代碼你會(huì)突然發(fā)現(xiàn)請(qǐng)求邏輯異常透明——這大概就是接口先行的魅力。最后再分享一個(gè)小習(xí)慣每次調(diào)試請(qǐng)求時(shí)先在apifox里確認(rèn)接口返回正常再去頁(yè)面上操作。如果頁(yè)面報(bào)錯(cuò)打開(kāi)Network面板看請(qǐng)求URL、狀態(tài)碼和載荷。按這個(gè)順序排查百分之八十的問(wèn)題五分鐘內(nèi)都能定位到。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
3PAV乱伦视频| 欧美人与动性人交a| 东京热毛片177b2viP| 91成人亚洲色图| 黄色电影在线播放综合网站| 男人的天堂日本东京热| 久久亚洲AV成人精品无码| Aa东京男人的天堂| 色爱欲亚洲| 欧美 精品国产制服第一页 | 男人的天堂三级| 人人天天干干| 日本视频在线中文字幕| 日本999精品| 亚洲国产高清福利视频| 一区二区视频在看| 97 九色| 9 9精品一区二区三区| 一区二区无码视频| 亚洲中文电影| 天天日少妇逼AV| 日韩视频啪啪| 久久久久久亚洲Av无码精| 亚洲骚男同com| 日韩精品怡红院| 亚洲一本大道中文字幕无码在线| 精品亚洲一区在线观看| 东北少妇高潮zzzz| 欧美真人抽搐一进一出gif| 美女t无毒不卡不卡| 青青草精品| 大香蕉免费乱伦视频| 国产精品日韩在线一区| 波多野结衣之双飞调教在线播放| 东北女人操逼| 97中文热色| 久婷婷一区| 精品一二三区久久AAA片| 无码人妻一区二区三区色欲aⅴ| 91日韩国产欧美亚洲另类精盘州至城都| 国产夜夜操| 欧美日韩一区二区三区四区蜜桃| 二男一女成人A片| a啊啊啊啊啊啊啊啊一区二区| 嗯嗯啊好大| 欧洲免费一区二| 激情接吻视频久久久久久| 操逼免费视频无码国产| 青娱乐老司机视频| 国产AV高清AV无码| 天堂无码精品国产久| 国产宅男宅女在线观看| 国产无吗在线播放| 少妇高潮特黄A片| 精品一区二区人妖| 骚逼高潮久久精品| 国产性感骚丝袜在线| 欧美激情 日韩精品| 日韩精品区二区三区不卡| 在线观看AV片| 精品无码一区二区三区| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 酒色综合网| 碰人碰碰人人开房人肉| 久久日本熟女精品一区| 亚洲 另类 丝袜 自拍 动漫| 精品女同一区| 97在线无精品 | 92性色国产午夜福利在线661 | 日本精品一区三区| 欧美日韩免费专区在线| 日韩情色一区二区| 在线观看国产黄色| av婷婷色网| 97一区二区三区视频| 另类欧美| 老妇女91| 日本高清_区二区三区| 99色综合| 久久97资源 网| 久9久| 亚洲天天影视色综合| 天天α片| 久区视频| 亚洲国产奇米影视久久| 国产精品久久发布| 久久久久ab| 超碰碰激情97+久| 老熟乱一区二区三区四区| 啊啊啊啊啊啊在线观看| 肉嘟嘟www视频在线观看高清| 蜜桃色色网站视频三区| 精产国品一区二三产品| 又黄又硬又粗又长国产视频| 亚洲资源站| 日B操| www.婷婷| 亚洲精品97p| 五十路六十路七十路熟婆| 日韩高潮一区| 亚洲综合色图欧美| AV中文在线| 日韩一级二级| 日日夜夜骑| 亚洲一区二区三区春色| 日韩精品一区二区三区四虎影视| 久久久免费视频18| 亚洲精品中文字幕一区在线视频| 91美女视频在线| 99热这里只有精品18| 日韩乱伦影音先锋| 在线播放中文字幕| 日本国产高清色www视频在线| 97国产超湿| 色偷综合| 精品国产丝袜一区二区三区乱码 | 玖玖爱伊人玖玖爱| 1769一区二区| 欧洲一区二区三区四区在线观看| 97欧美性爱| 污污污8888| 亚洲日韩av专区无码| 欧美性猛交美女自慰91| 国产丁香精品露脸视频| 国产一级黄色片在线观看 | 日韩精品1区2区中文字幕| 久久久av爱| 五月天久久综合网| 啊啊啊在线观看免费视频| 百度百度日本操逼| 精品国产乱码久久久久久日本公司| 欧洲亚洲国产综合在线| 91 丝袜在线观看| 欧美日韩国产高清在线一二三区 | 黄片aaaaa一区| 试看60秒| 激情AV| 超碰97久久国| 国产精品视频精品一二| 久久久久久久久女黄| 久久久久久人妻| 96久久久精品| 欧美日韩国产三级黄色| 中文字幕在线第二页| 操逼网免费无码视频| www.男人天堂| 91粉嫩萝控精品福利网站_精品影音先锋国 | 插B在线观看| 免费看日本操逼视频| 色眯眯av| 五月丁香激情综合网| 日日爱99| 男人的天堂久久狠| 玖色AV| 九九精品无码专区免费| 亚洲日精品| Av色五月| 亚洲 欧美 日韩 国产一区二区| 欧美综合97www| 久久欲| AV色图| 亚洲色偷偷色噜噜狠狠99网| 日韩性爱电影一区| 国产最火爆久久国产网站网站| 日日骚精品视频| 欧美很很操视频| 一级二级在线观看| 国产五码丝袜屁眼| 天天添天天干电影| 无码抄逼网| 丁香五六月啪啪| 久久久一区二区| 99色婷婷| av凤凰久久久| 久草免费福利在线播放| 日语五十路和六十路亚洲国产精品| 亚州日韩97| 91在线欧色| 亚洲av淫乱| 日本韩高清无砖码22o| 色69大色97香蕉| 91色狼| 神马视频久久久久久| 日本人人操人人操| 国产久久av| 韩国手机不卡无码三级视频| 91视频综合网| 操逼操2| 国产AV天美传媒一区二区三区| 九一综合精品视品av| 熟女乱伦二区| 国产亚洲精品第一最新| 无码聚合| 青青草天天亲夜夜操网| 国产精品一区二区三区,亚洲综合| 91黑人狂躁丰满熟妇| 玖玖资源视频一区二区三区| 欧美激情久久久久| 欧美亚洲se91| 综合av影片| 熟啊v色欧美热| 成人综合网 欧美| 麻豆黄色五月天| 裸体美女免费看网站青草| 一级A片女人高潮叫床| 成人av福利在线观看| 久久啊啊| 91精片| 97超碰色情| 97中文综合| 亚洲图片视频小说| 久日综合网| 日本蜜桃| WWW.加勒比人妻一区不卡.com| 欧美日韩高潮喷水91| 99久在线精品99re8| а√天堂资源官网在线资源| 人人九九精| 蜜臀th| 91n免费处女| 欧美亚洲第1页| 亚洲色性情三级| 中文字幕在线24| 日韩啪啪啪啪啪| 99re6国产精品99re在线| 色久综合| 天天看高清麻豆| 亚洲熟女乱熟乱熟妇综合网二区| 97丝袜亚洲在线播放| 91真人天天在线| 精品免费1| 亚洲五区熟女| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 后入 亚洲 美女 射| 红杏大香蕉| 亚洲综合五月天| 狠操91,com| 亚洲色图A| 免费A V在线播放| 天天看综合网| 欧美老熟另类| 九九久久国产精品| 插B在线观看| 蜜桃天美传媒AV一区二区三区| 91天天爽| 日韩视频中文字幕| 久操视频资源站公开| 破苞ⅩXXX性无码动漫无码| 99久久99久久综合| 欧美激情片一区二区| 综合欧美日韩在线| 校园春色五月天| 亚洲一级性爱视频免费看| 亚洲偷拍自拍在线视频| 91逼逼女人91| 精品无av| 国产黄片精品在线| 极品极品色影院| 天天综合欧美综合| 日韩国产精品人妻无码久久久| 欧美在线视频播放| 91亚洲人| 日日碰狠狠添天天爽超| 欧美中字二区| 久久国产乱子伦精品免费女,网站| 日韩亚洲中文有码视频| 五月婷婷丁香| 黑人干亚洲| 久久久久久网址| 色综合网1| 欧洲中文字幕| 97超碰超碰| 在线综合色| http://qxhbdz.com| 91精品丝袜久久久久久| 午夜天堂精品久久| 啊啊啊啊啊啊好多水| 在线观看成人性爱免费小视频| 亚洲 综合 欧美| 98超碰日本| 亚洲一区二区在线观看91| 伊人影院综合是一个与深夜成人在线| 欧美性爱一区| 人人人干干人人干| 中文字幕日本久久| 69丨亚洲丨精品丨入口免费播放| 欧美欧美啪啪视频| 熟妇在线视频一区二区| 91欧美www| 三级色综合| 国产原创精品| 草草电影院| 色色五月婷婷| 欧美综合中文| 五月天成人综合| 我爱搞逼综合网| 天天日天天干天天色| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲少妇色| 91老妇女| 久热9| 久久婷婷欧美| 日本一级二级三级网站| 欧美一品道| 久久riav中文精品| 九九九九免费视频| 久久精品国产免费观看99| 我中文字幕6区| 欧美呦呦性爱| 五月天亚洲网| 操逼网免费无码视频| 国产自产91区13区| 日韩在线性爱免费视频| 我中文字幕6区| 操逼天美3区| 国产中文福利| 一区二区三区黄片免费观看| 九七毛片九九毛片| 中国国国产一级特黄毛片| 校园春色家庭伦理欧美激情| 日韩一级二级| 精品成人亚洲午夜电影| 久久久成人精品| 免费综合亚洲中文| 99中文字幕| 久久人妻四季| 大香蕉久久| 亚洲 欧美综合| 丝袜熟女2P| 中文操逼字幕| 日本加勒比无码专区一二三| 成年男人的天堂| 黑人狂躁日本妞一区二区三区| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 日韩91网| 欧美72网页| 人人操人人干网页| 亚洲AV永久无码精品成人调教| 99这里有精品| 一级@啪啪视频| 一区二三区四区视频大全套| 国产玖玖| 一个人免费HD91视频| 亚洲色图A| 五月天色电影| 99色色网| 久久这里是精品| 99啪啪| 久/久精品99看9| 国内偷拍精品一区二区| 欧美日韩人妻婷婷一区| 久热99| 成人老鸭窝人人在线视频| 欧美色图亚洲色| 久久偷偷色综合蜜桃| 五月综合激情| 亚洲国产一级精品毛一级精品看免费视频| 91精品网站| 国产精品视频在线播放| 最近的最新的中文字幕视频| 香伊人在线| 91人妻人人澡人人爽人人精品| 一区二区三区蜜桃成人撸久久东京热 | 岛国免费视频在线| 97超碰超| 伊人午夜福利视频| 久久少妇视频| 无遮挡h肉动漫在线观看| 操逼视频色| 欧美色青| 人人妻人人爽人人精品| 久久久少妇诱惑精品视频| 99热在线不卡| 欧美91网站| 女人的久久久| 亚洲欧美国产日本一区二区三区| 亚洲第一狼人丝袜美女另类 | 女人被男人桶爽视频网站| 天天日夜干| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 99热这里只有精品地址| 1人人看人人摸人人操| 中文字幕在线观| 色五月激情AV在线| 欧美大干日韩| 久久一区二区加油站| 国产四虎在线| 观看免费区二区三区二| 亚洲情色婷婷五月天| 五月天婷婷基地| 牛牛aV| 亚洲啪啪视频一区二区| 免费人成?大片在线播放| 成人亚欧免费视频| 综合欧美激情网| 人人摸.人人色| 国产真乱mangent| 欧洲黄色网| 欧美的性爱网站免费| 国产精品成人AV片免费看网站| 亚州欧美在线| 亚洲丝袜综合| 久久男人的天堂| 欧美姓爱综合网| 综合另类| 91精品久久久久五月天精品| 欧洲成人性爱视频| 97任你吞精| 95人妻爽爽人人做人人澡| 男人下部插入女人下部| 日韩99神马视频播放| 四虎免费看黄| 裸体美女久久久| 天天影视网色欲色香| 校园春色美腿丝袜| 人人妻人人爱人人玩| 欧美人妻少妇| 精品国产乱码| 久久精品美女一区| 国产无套粉嫩白浆在| 97资源超碰| 校园春色综合色| 97 九色| www黄片免费看com| 少妇超碰在线| 婷婷九月国产| 欧美懂色综合网| 午夜小电影在线插入淫高潮| 国产欧美日韩一区二区三区| 五月婷丁香| 亚洲天天影视综合网| 青操影院| 欧洲黄色网| 日本国产欧美高清在线| 2010男人的天堂| 色妹子A V| 成人久久久精品| 清纯唯美第一页| 亚洲āv网址在线观看| AAAAAAAAA黄片| 91久久久久久久| 久久精品夜色国产亚洲AV| 色97国产69香蕉| 人人弄人人摸| 国产这里只有精品| 亚州熟妇精品| 免费福利视频中文字幕| 九九视品黄色| 日韩射图| 日韩国产成人自拍视频| 久草婷婷| 日本高清视频xxxx| 麻豆国产尤物AV| 亚洲第91页| 操国产高清| 极品白嫩美女白浆成人福利在线看| 日日橹狠狠爱欧美超碰| 精品一区二区三区国产| 天天综合网站| 33044男人的天堂深夜备| 一级人妻性爱视频| 青春草A| 超碰人人乐97| 中文有码9| 波多野结衣先锋影音| 丁香五月影院| 91精品人妻| 视频分类 国内精品| 日韩啪啪啪视频| 丁香色狠狠色综合久久小说| 久久久婷婷婷| 欧美色图电影| 九九在线精品| 日本不卡一二区| 欧美网站免费| 久久草视频污视频| 亚洲最大成人a毛毛片| 一本一首道人妻少妇免费久久| 国内外内射高清视频| 第一高清av中文字幕| 69久久久久久久久久久久久| 日韩色| 久久人妻无码毛片A片麻豆| 日韩av性爱在线播放| 天天干2区3区| 超碰免费人妻人人| 91超碰碰在线| 午夜影美女日鸡鸡天天视频国产| 中亚黄色三级大片 | 韩国女主播青草在线| 亚洲 欧美 精品专区 极品| 999狠狠综合| 九九久久玖玖| 欧美亚洲se91| 国产午夜无码片在线观看影视| 久久一本大香蕉 | 熟妇熟女视频一区二区三区| 99精品人妻| 婷色五月| 中国AV美女| 免费啊啊啊| 国产午夜无码片在线观看影视| 98超碰日本| 日韩三级一区| 久久性爱视频99| 亚洲一二三| 91久久久久久| 无遮挡男女激烈动态图| 欧美人人天天网| 天堂8在线新版官网| 99久久99久久免费精品蜜臀| 草伊人高潮喷水超碰| 国产精品一区午夜福利| 蜜臀va69| 伊人97色天使| 久久ww| 麻豆国产97在线| 操曰本熟女| 日本熟妇一区二区三区| dy888午夜老子影视达达兔| 大香蕉青青9| 长长久久88视频| 欧美性爱18观看| 国产精品69久久久久孕妇欧美| 丰满人妻一区二区三区在线| 做爱A级亚欧| 色色九区| 91伊人久久在线| 精品久久久久,69国产成人精| 色色色天美视频| 玖草在线视频| 国产成人啪一区二区| 超碰超碰95| 曰韩av中文字幕专区| 国产粉嫩蜜臀av一区二区三区| 九九av| 91在线美女| 亚洲激情在线一区二区| 中国大陆国产高清AⅤ毛片| 亚洲欧美洲综合| 亚洲欧美日韩电影网站一区 | 日韩欧洲操屄视频| 韩日欧亚a级| 国产视频第2页| 美女啊啊啊啊啊啊啊| 色婷婷av在线观看| AV无码久久久精品| 亚洲精品尤物yw在线影院| 91美女视频在线观看| 九九九九97| 日本中文字幕一区| 丰满搜索结果 -第18页- 久久高清无码 | 97在线观看免费视频| 骚妻少妇精品性色无码四色A V| 日本九九久久99播| 荡小穴在线观看| 免费观看欧美日韩操逼视频| 久久五月视频| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 天天插夜夜操| 国产日韩色综合| 熟女这里只有精品6| 国产精品免费久久久久久久久久| 殴美性天天| 国产9熟妇视频网站| 美女好片色日本| 91在线丝袜| 五月天亚洲网| 欧美黑人日韩少妇色情| 牛牛久久国产精品视频一二三| 欧亚不卡| 超碰98综合网| 免费超碰97久久| 青草园大香蕉| 91熟女丨91老女人| 色噜噜国产精品视频一区二区| 99久久99九九99九九九| 夜夜夜爽www精品视频| 97精品在线视频| 日韩欧美加勒比| 亚洲美女AV无码| 亚洲巨爆乳一区二区三区四季网| AV乱伦国产| 青青操综合网| 精品国产肉丝袜在线拍国语| 99热思思| 91欧美长吊| daxiangjiao你懂的| 欧美日韩美女精品久草一区二区三区 | 久久偷偷色综合蜜桃| 久热大香蕉网站| 96国产精品| 国产传媒日韩| 国产家庭乱伦表演| 一区二区三区成人高清视频| 日本午夜精品理论片A级APP发布| 2021久久国产综合精品青草| 9久久精品| 久久婷婷国产一区二区色| 中文字幕在线观看第二页| 成人日本精品九区| 亚洲www91| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 女人被添高潮免费视频| 激情一区二区三区在线观看| 国产精品 午夜福利| 亚洲熟女乱色一区二区三区久久久| 蜜桃色院一区久久| 欧亚日韩一区在线| 成人a大片在线观看| 中文字幕av乱伦| 九九玖玖精品| 黄色成年| 亚洲乱伦图片视频| 夜夜夜久久| 四虎在线免费视频| 视频一区二区三区精品| 在线观看国产黄色| 大香蕉中文aV在线| 国产日韩怡红院| 国产传媒操逼视频| 有码免费观看| 夜夜嗨一区| 国产激情视频一区区三区| 强奸乱伦αv片| 九九英色视频| 日韩精品-原创伙伴| 国产精品成久久久久午夜午夜| 国产精品毛片?v一区二区三区| 久久综合婷婷| 天海翼久久| 男女性无套 免费九一| 东京热亚洲一区二区| 综合久久99亚洲人妻中文在线| 黄页av| 一区二区三区机械有限公司| 日韩人人精品| 亚洲欧洲综合成人av一区| 成人情色一区二区| 99超碰网| 久久综合五月天| 久久久久久久久国产| 91伊人久| 亚洲情色一区三区| 免费中文综合精品| 国产精品情侣啪啪| 天天做天天爱| 天天操天天插| 91精片| 色蜜AV| 超碰色图| 久99热| 亚州综合在线| 天天摸,夜夜摸| 91狠狠综合久久| 精品在线观看视频在线| 新精精品久久精品| 久草网站免费在线观看| 人妻黑丝袜电影| 日本五十路熟女一区二区| 久操在97| 女人高潮抽搐喷水视频网站| 日本一区视频在线观看| 色妹子A V| av影片在线观看不卡| 欧美淫穴| 欧美中文综合| 夜夜嗨av午夜成人| 日本一区视频在线观看| 97久久久精品| 免费啪啪啪网站18岁| 情色图区| 懂色AV一区二区三区| 天天综合青苹果| 99色悠悠| 人妻偷拍一区二区三区| 1二区9| 五月天久久综合网| 亚av顶级裸体一区二区三区四区五区 | 久久久久婷婷精品av电影| 久久国内| 日韩大香蕉| 日韩中字av一区| 天天日天天搞天天干| 狠狠干2020| 久久久久9| 91丝袜在线播放| 久久欧洲| 91丨九色丨大屁股| 91免费看一区二区三区| 欧美亚洲AN| 韩国三级理论在线| 亚洲图片欧美色| 成人一区二区三区四区| 久久久免费一级黄片| 日韩15p| 国产亚洲色婷婷99精品91| 国产区性爱在线视频秋霞豆| 亚洲天堂资源在线| 欧美欲色| 99热亚洲| 日韩在线性爱免费视频| 四虎精品永久在线观看| www.色操逼| 五月天久久综合网| 天天天干977| yiren97| 狠狠干,狠狠操| WWW啪啪的com| 97超碰色情| 伦在线97| 一区二区三区四区五区高清无码永久视频| 国产欧美岛国精品一区| 欧美日韩97| 欧美综合综合| 91美腿丝袜在线观看| 在线综合 亚洲 欧美中文字幕| 国产精品毛片| 熟妇国产免费一区| 亚洲一二三四区机械| 激情久久久| 温婉少妇玩3p| 五月丁香六月综合缴清无码| 极品出轨视频网站| 一本大道综合伊人精品热热| 亚洲精品一二三四区| 日本午夜久久电影| 精品成人亚洲午夜电影| 人人操 欧美| 久久青青草在线视频| 少妇高潮喷水无套久久久久久| 亭亭丁香激情| 视频在线观看一二三区| 亚洲黄色影视| 国产精品女久久久久av爽| 亚洲色欲天天天堂色欲网女| 啊啊啊爽爽| 婷婷激情丁香| 婷婷国产精品一区二区| 欧美白嫩在线放| 丰满少妇人妻久久久久久| 激情五月天色色网| 色情综合| 国产精品久久伊人| 白嫩国模丰满一二三区| 国产精品久久久鸭无码的功能| 在线看的av| 青青青国产手线观看视频2| 啊啊啊想要| 放黄片放3级黄片没穿衣服| 91欧美经典| 一卡二卡在线播放| 97视频免费| 久久丝袜| 亚洲国产97| 欧美一区二区男人天堂| 亚洲成人激情小说视频| 亚洲欧美综合| 久久精品熟妇丰满人妻99| 96超碰网| 国产91 丝袜在线播放00-百度| A一级色女| 色偷偷超碰亚洲| 亚州大图综合色图| 天天操人人操骚逼网站| 大香蕉色欲AV| 欧美日韩久久精品爱爱| 色欲av国内精品久久久久久| www国产无码| 国产精品亚洲无码| 伊人激情五月天一区二区| 欧美视频一区二区在线| av中文在线| 天天综合色电影| 天天综和| 丰满熟女人妻一区二区三五十一路| 精品二区久久| 日韩9区| 丰满人妻-区二区三区| 日韩无码视频黄色| 免费看黄视频亚洲网站| 韩国三级理论在线| 久久久久久久久久久人妻| 国产超碰在线一区| 亚洲综合图片在线| 色香AV| 在线播放免费av福利片| 亚洲欧美日韩精品久久久一区二区| 91久久久久免| 西西美女视频网| 欧美熟女逼久久久久久| av影片在线观看不卡| 亚洲图片日本AⅤ欧美在线| 国产女人操逼视频| 亚洲AV免费在线观看| 久久久111| 精品美女少妇一区二区| 操逼日批| 97人人干人人操| 国产午夜福利视频在线| 日本ZZ高免费A级视频| av网站免费看| 强歼乱伦资源网| 亚洲国产综合久久久性感熟妇| 久久99草| 91精品老女人| 精品人妻中文字幕4399| www.色五月| 夜夜 中文视频rt| 国产强奸乱伦欧美| 欧美成人一区二区三区在线播放| 高凊专区人人操| 日韩人妻丝袜美腿中文| 丰满人妻区一区二区三| 草莓精品视频| 精品久久在线区一区| 日本加勒比无码专区一二三| 日韩av性爱在线播放| 最新日产中文在线麻豆| 一区二区三区国产精产| 国产精品久久泡妞网站| 欧美老妇曰批的视频| 91色艳| 9久9久9久9久视频网站| 天天做日日做天天欢。| 欧美无圣光在线| 青青青青操国内视频在线| 自拍偷拍2025在线观看| 欧美少妇色综合| 亚洲人成网站7777| 69人妻人人揉人人躁人人精品| 久久久久久久久女黄| 亚洲精品天堂久久A∨51成人漫| 色婷婷综合久久久久中文一区二区| 国产精品白丝www| 久久国产热视频97电影| 天天内射| 十八禁视频一区二区| 91N欧美| 91综合熟女| 天天爽天天爽| 东京热毛片调教| 亚洲精品视频在线播放| 九九人妻| 日本一本道A级黄色毛片试看60分钟| 97一区二压| 熟妇xxxxx性春色| 日欧美色| 国产精品麻豆视频网站| 亚洲天堂自拍| 亚洲乱色熟女一区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 天堂俺去俺来也www久久婷婷| 男人的天堂在线2| 成·人免费午夜在线观看| 中文字幕亚洲欧美在线不卡| 噜噜噜噜天天狠狠| 五月丁香婷婷啪啪| 天天干干天天干干| 欧美综合 站| 久久久久九九九| 最新AV在线| 天天日天天色| 激情小说亚洲| 亚洲 欧美 另类 日韩 人妻一区 | 日韩乱码Av| 熟妇乱伦一区二区| 蜜臀AV成人精品蜜臀| 久久美女国产| 麻豆色约约| 超91综合网| A级在线视频| 大香蕉在线86| 欧美老妇曰批的视频| 安微少妇操BBB| 91chinese在线| 丁香婷婷五月| 亚洲精品蜜桃久久久一区二区三区| 操国产逼| 91亚洲狠狠色| 床上啊啊啊一区二区三区| 久久男人| 成人十八禁日韩欧美一二三| 丁香六月激情| 婷婷色香伊人| 日韩午夜国产| www.99在线| 91伊人久| 欧美激情高清性猛交| 中字乱伦AV| 翔田千里Av在线| 97国产精品久久久久| 男女打扑克高清网站| 国产午夜在线观看视频| 亚洲中亚日激情视频| 熟女丰满人妻一区| 国内毛片婷婷六月色| 黑人在线91| 亚拍在线| 天天综合精品| jizzjizz欧美| 东京热男人的天堂| 东北操逼| 亚洲 欧美 小说| 婷婷久草| 一级黄色性爱裸体视频| 麻豆色约约| 丝袜性亚洲| 神马精品视频| 亚洲操人| 午夜AV人气不卡| 自拍偷拍第26| 91丝袜美女视频| 97人人夜| 粉嫩小泬久久久一区二区| 欧美亚洲国内自拍| 久久久激情| 欧美日韩性爱操大逼| 啊啊啊啊啊在线| 91精品人妻一品二品三品| 日韩 成人 有码| 久久久久久性爱视频| 久久99久久99久久99人受| 岛国大片国产| 超碰国产精品无码| av激情亚洲五月天| 精品午夜福利| 人人考人人摸人人干| 中文字幕久热视频在线| 日韩欧美午夜一区二区| 日韩无码极品| 国产黄色剧情影片麻豆免费播放| 欧美视频一区二区三区| 日本性一区| 欧美一区二区三区成人性生活| 欧美亚男人的天堂| 丁香啪啪| 久久国产视频性吧 | 色激情五月天| 激情综合亚洲| 999岛国大片| 伊人女女资源在线观看| 青青伊人这里只有精品| 2017人人操,人人摸| 八戒午夜福利理论片| 富女玩鸭子一级毛片| 久操视频这里只有精品| 96麻豆精品一区二区三区| 蜜臀久久99精品久久久久电影| 日韩欧美三级| 中文三一区| 国产又大又粗又长视频| 天堂亚洲欧美| 亚洲欧美97| 日本操逼视频免费| 手机看片91人妻| 欧美人人操人人插| 在线播放免费av福利片| 国产东北女人在线视频| 中国探花熟女| 啪一啪免费视频| 五月婷婷基地| 日本精品人妻少妇一区二区| 91丝袜在线观看视频在线观看| 翘臀vidoes| 成人老鸭窝人人在线视频| 色999偷自拍拍| 久久视频,这里只有精品| 久久久成人免费av电影| 青青草福利视频| 日韩国产精品人妻无码久久久| 国产精品99精品视频网站| 久久美女国产| 秋霞视频一区二区| 男人天堂.AB| 国产成人主播| 中文字幕人妻丝袜乱一区三区| 天天日天天干少妇日| A级片一区| 黄色大香焦1级‘′‘| 色综合色色| 欧美五区| 97超碰影音| 天天干天天舔| 国产九九九九九九九九| 操逼1区| 2011国产精品| 无码视频一区二区| 校园春色亚洲色图| 日韩极品无码B| 天天爽天天操| 91成人国产综合久久精品蜜月| 中文字幕少妇色| 国产AV天美传媒一区二区三区| 另类图片天天影视| 一级久久久久久久久久久 | 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 91久久青青草原精品| 人人妻人射| 人人色人人射人人妻| 欧洲精品区| 丁香五月婷婷五月| 久久国产精品,久久国产| 超碰97首页| 欧美性爱日韩高清| 色婷婷成人| 国产精品国产| 黄色免费网| 又黑又大又粗| 97欧美久久久久久久| 9Ⅰ超碰| 美中日韩无码| 人人手机欧洲亚洲国产人妻| 人妻熟女一区二区三区视频| 99这里只有精品国产| 性色一线| 日韩在线观看AV| 日本国产高清色www视频在线| 天美传媒国产原创中文字幕亚洲欧美另类| 久久国色天香香蕉| 好爽视频在线观看视频| 插日本熟女视频| av东京热男人的天堂| 国产品精品自在在线午夜免费| 男女一级A片大黄,一进一出| 欧洲亚洲人妻无码中字久久三区四区| 思思热国产高清| 五月天激情网图片| 久久精品72| 四虎国产精品永久在线囯在线 | 少妇与黑人高潮在线| 中文字幕三四五区| 五月天婷婷基地| 黄色av播放免不| 97在线视频观看| 人妻天天爽夜夜爽爽| 综合色好色| 亚洲色偷偷色噜噜狠狠99网| 91热热色| 五月丁香婷婷综合网| 久久久91福利姬| 欧美性爱一级操| 久久少妇人妻| 欧美十八禁网站| 嫩草 我啊~嗯~在线| 粉嫩不卡一区二区性爱 | 另类小说综合网| 亚洲吊色| 国产精品点击进入在线影院| 国产精品久久久777| 内射夫妻三片| 亚洲激情色片| 高清国产成人无码| 加勒比av网| 色官网在线| 天天伊人| 亚洲欧洲小说图片视频| 欧亚日韩综合精品国产| 欧美性爱在线无码| 5252色欧美在线男人的天堂| 99自拍视频| 9丨久久九九九| 精品射1999| 日本韩国国产精品一区| 性色av一区二区| 萌白酱自拍视频| 精品少妇高潮久久| 日韩操人| 国产精品黑人一区二区三区| 国产av青草| av在线不卡一区二区三区| 色www精品视频在线观看| 激情五月天丁香社区| 日本一二三免费久久| 亚洲免费精品一区| 青娱乐欧美激情一区二区| 狠狠夜色午夜久久综合在线| 中文字幕奈奈美被公侵犯| 69视频福利导航| 日韩女模中文造逼| 99在线精品视频| 极品粉嫩少妇视频| 黄色电影观看久久9| 国产精品一区二区密臀| 中文字幕艹艹| 亚洲欧美一区二区三区一猛片| 蜜臀99久久精品| yirendaxiangjiashipin| 亚洲一级性爱视频免费看| 黑人性欧美| 天天日日日射| 久草大| 精品国产乱码| 精品欧美乱码久| 蜜臀久久在线视频| 男人天堂2019亚洲| 免费1级a做爰片观看| 超碰97综合在线| 日韩人妻网站| 婷婷五月丁香五月| 天天视频网站黄| 久久精品区| 超碰中文字幕人妻草一区| 久久久久久久人妻| 久久免费99精品久久久久久| 天天拍夜夜| 欧中日成人免费影视| 久久伊人大香蕉| 欧美传媒| 精品少妇999| 亚洲激情在线一区二区| 一本色道综合久久欧美| 国产精品久久久久9999小说| 青青草视频久久久久| 色色国产| 日韩av一级黄片| 性爱视频无打码在线观看| 美女9118禁| 热热色青青草| 天天看特黄的免费网站 | 日韩性爱长视频免费| 乱人乱色一区二区三区免费| 亚州国产精品乱| 91一区二区| 91爆操视频| 国产亚洲精品精AV.| 久久久偷拍| 99这里都是精品| 日本一区二区三区欧美日韩中文字幕| 亚洲最大成人a毛毛片| 友优传媒精品在线一区二区| 干b在线性社区| 中文字幕性感少妇av| 国产黄色影片在线观看| 黑人在线91| 中日992视频| 欧美一二级| 丰满人妻一区二区中文| 久久亚洲影院一区二区| 人人乐大香蕉| 3571色综合一区二区二区| 国产高清无码一区二区三区四区皇冠| 国产www色在线观看| AV在线性爱| 久久东京伊人一本到鬼色| 婷婷伊人五月| 不卡av免费在线网址| 91人人| 91欧洲国产成人久久精品网站| 国产精选视频| 农村妇女精品一二区| 九色 蝌蚪 熟女自 | 日日操免费视频| 国产精品露脸在线观看| 婷婷10月天青娱乐| 久久久91| a级免费在线观看| 中文字幕后石码三区四区| 人妻天天爽天天爽三区|