日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

antd request 通过jsessionid传参数_Umi-request源码阅读

發布時間:2023/12/4 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 antd request 通过jsessionid传参数_Umi-request源码阅读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近參照antd-pro腳手架進行開發,因此接觸到了umi-request。

umijs/umi-request?github.com

umi-request對fetch進行了封裝,簡化了api的使用,結合了fetch和axios的特點,具體可參照umi-request的readme介紹。

文件結構

核心文件夾為src文件夾,內含

  • lib文件夾為修改后的fetch.js;
  • defaultInterceptor.js用于注冊攔截器;
  • index.js是外部調用的入口文件;
  • request.js提供request實例;
  • utils.js定義了處理緩存、請求異常、響應異常、處理gbk、json語法分析的功能類;
  • wrapped-fetch.js從文件名可以看出來為封裝fetch,實現更新版數據的傳遞;
  • wrapped-rpc.js從文件可以看出封裝了rpc通信,待實現;

代碼分析

原始代碼里含的注釋基本上已經很全面了

defaultInterceptor.js

功能有:數據提交方式簡化/針對常見兩種數據傳輸格式補全文件頭“Accept: 'application/json', 'Content-Type': 'application/json(或者x-www-form-urlencoded);charset=UTF-8'”/url 參數自動序列化

主要是對傳入的url和option進行格式化的處理,以便后續的fetch.js進行處理。
關于option的新增參數參見request.js。export default (url, originOptions = {}) => {const options = { ...originOptions };// 默認get, 兼容method大小寫let method = options.method || 'get';method = method.toLowerCase();if (method === 'post' || method === 'put' || method === 'patch' || method === 'delete') {// requestType 簡寫默認值為 jsonconst { requestType = 'json', data } = options;// 數據使用類axios的新字段data, 避免引用后影響舊代碼, 如將body stringify多次if (data) {const dataType = Object.prototype.toString.call(data);if (dataType === '[object Object]' || dataType === '[object Array]') {if (requestType === 'json') {options.headers = {Accept: 'application/json','Content-Type': 'application/json;charset=UTF-8',...options.headers,};options.body = JSON.stringify(data);} else if (requestType === 'form') {options.headers = {Accept: 'application/json','Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',...options.headers,};options.body = stringify(data);}} else {// 其他 requestType 自定義headeroptions.headers = {Accept: 'application/json',...options.headers,};options.body = data;}}}// 支持類似axios 參數自動拼裝, 其他method也可用, 不沖突.if (options.params && Object.keys(options.params).length > 0) {const str = url.indexOf('?') !== -1 ? '&' : '?';url = `${url}${str}${stringify(options.params)}`;}return {url,options,}; };

fetch.js

主要是定義了request和response攔截器。

攔截器,在AOP(Aspect-Oriented Programming)中用于在某個方法或字段被訪問之前,進行攔截,然后在之前或之后加入某些操作。可以對http請求進行批量處理。import 'whatwg-fetch'; import defaultInterceptor from '../defaultInterceptor';const requestInterceptors = []; export const responseInterceptors = [];function fetch(url, options = {}) {if (typeof url !== 'string') throw new Error('url MUST be a string');// 執行 request 的攔截器,使用defaultInterceptor,依據handler方式對url,option進行處理requestInterceptors.concat([defaultInterceptor]).forEach(handler => {const ret = handler(url, options);url = ret.url || url;options = ret.options || options;});// 將 method 改為大寫options.method = options.method ? options.method.toUpperCase() : 'GET';// 請求數據let response = window.fetch(url, options);// 執行 response 的攔截器,依據handler方式對url,option進行處理responseInterceptors.forEach(handler => {response = response.then(res => handler(res, options));});return response; } // 支持攔截器,參考 axios 庫的寫法: https://github.com/axios/axios#interceptors fetch.interceptors = {request: {use: handler => {requestInterceptors.push(handler);},},response: {use: handler => {responseInterceptors.push(handler);},}, };export default fetch;

utils.js

定義了處理緩存(Mapcache)、請求異常(RequestError)、響應異常(ResponseError)、處理gbk(readerGBK)、json語法轉換(safeJsonParse)的功能類;

  • 處理緩存

options.maxCache是option的extend參數,可以在封裝umi-request時指定,

如antd-pro. const request = extend({maxCache: 50,});

實現變量的獲取、變量刪除、緩存清空、value存入緩存(其中key json化后為關鍵字)

export class MapCache {constructor(options) {this.cache = new Map();this.timer = {};this.maxCache = options.maxCache || 0;}get(key) {return this.cache.get(JSON.stringify(key));}set(key, value, ttl = 60000) {// 如果超過最大緩存數, 刪除頭部的第一個緩存.if (this.maxCache > 0 && this.cache.size >= this.maxCache) {const deleteKey = [...this.cache.keys()][0];this.cache.delete(deleteKey);if (this.timer[deleteKey]) {clearTimeout(this.timer[deleteKey]);}}const cacheKey = JSON.stringify(key);this.cache.set(cacheKey, value);if (ttl > 0) {this.timer[cacheKey] = setTimeout(() => {this.cache.delete(cacheKey);delete this.timer[cacheKey];}, ttl);}}delete(key) {const cacheKey = JSON.stringify(key);delete this.timer[cacheKey];return this.cache.delete(cacheKey);}clear() {this.timer = {};return this.cache.clear();} }

在wrapped-fetch.js中調用

_wrappedCache(instance, useCache) {if (useCache) {const { params, ttl } = this.options;//url請求參數params,和緩存時長ttl為option傳入參數return instance.then(response => {// 只緩存狀態碼為 200的數據if (response.status === 200) {const copy = response.clone();copy.useCache = true;//this.cache為通過request.js調用傳入的參數const mapCache = new MapCache(initOptions);this.cache.set({ url: this.url, params }, copy, ttl);}return response;});} else {return instance;} }
  • 請求異常
export class RequestError extends Error {constructor(text) {super(text);this.name = 'RequestError';} }

在wrapped-fetch.js中如此使用,用于輸出超時信息,其中timeout為option傳入參數。需要注意的是超時后客戶端雖然返回超時, 但api請求不會斷開, 寫操作慎用。

return Promise.race([new Promise((_, reject) =>setTimeout(() => reject(new RequestError(`timeout of ${timeout}ms exceeded`)), timeout)),instance, ]);
  • 響應異常
export class ResponseError extends Error {constructor(response, text, data) {super(text || response.statusText);this.name = 'ResponseError';this.data = data;this.response = response;} }

在wrapped-fetch.js中調用,示例,當異常時拋出異常

catch (e) {throw new ResponseError(response, e.message);}
  • 支持gbk并進行json格式的轉換

判斷返回的數據時表示gbk編碼的,如果是,將數據以gbk格式讀入,然后再利用safeJsonParse轉化為json格式

export function readerGBK(file) {return new Promise((resolve, reject) => {const reader = new FileReader();reader.onload = () => {resolve(reader.result);};reader.onerror = reject;reader.readAsText(file, 'GBK'); // setup GBK decoding}); }export function safeJsonParse(data) {try {return JSON.parse(data);} catch (e) {} // eslint-disable-linereturn data; }

wrappedfetch.js

核心部分,基于fetch進行數據交互

一個 Promise 就是一個對象,它代表了一個異步操作的最終完成或者失敗,通過 .then() 形式添加的回調函數,連續執行兩個或者多個異步操作(鏈式調用,多個then,一個catch接收異常)。

一個 Promise有以下幾種狀態:

  • pending: 初始狀態,既不是成功,也不是失敗狀態。
  • fulfilled: 意味著操作成功完成。
  • rejected: 意味著操作失敗。

當其中任一種情況出現時,Promise 對象的 then 方法綁定的處理方法(handlers )就會被調用(then方法包含兩個參數:onfulfilled 和 onrejected,它們都是 Function 類型。當Promise狀態為fulfilled時,調用 then 的 onfulfilled 方法,當Promise狀態為rejected時,調用 then 的 onrejected 方法。

Promise.resolve(value)方法返回一個以給定值解析后的Promise 對象。但如果這個值是個thenable(即帶有then方法),返回的promise會“跟隨”這個thenable的對象,采用它的最終狀態(指resolved/rejected/pending/settled);如果傳入的value本身就是promise對象,則該對象作為Promise.resolve方法的返回值返回;否則以該值為成功狀態返回promise對象。

Promise.reject(reason)返回一個狀態為失敗的Promise對象,并將給定的失敗信息傳遞給對應的處理方法

export default class WrappedFetch {constructor(url, options, cache) {this.cache = cache;//cache是MapCache的實例this.url = url;this.options = options;this._addfix();return this._doFetch();}_doFetch() {//如果使用cache,只有在option的method是get且useCache為true時使用cacheif (useCache) {let response = this.cache.get({url: this.url,params: this.options.params,});if (response) {response = response.clone();let instance = Promise.resolve(response);responseInterceptors.forEach(handler => {instance = instance.then(res => handler(res, this.options));});return this._parseResponse(instance, true);}}let instance = fetch(this.url, this.options);// 處理超時instance = this._wrappedTimeout(instance);// 處理緩存 1.只有get 2.同時參數cache為true 才緩存instance = this._wrappedCache(instance, useCache);// 返回解析好的數據return this._parseResponse(instance);}//對url進行自動序列化,添加前綴和后綴_addfix() {} //調用RequestError,在超時后輸出信息_wrappedTimeout(instance) {}//調用MapCache,在用戶使用usecache時將response復制到擦車中,并設置緩存時間_wrappedCache(instance, useCache) {}//處理返回類型, 并解析數據,如果編碼方式時gbk則利用readerGBK和safeJsonParse進行轉化,在讀取response時,加入responseError處理_parseResponse(instance, useCache = false) {}//處理錯誤_handleError({ reject, resolve }, error) {} }

request.js

option里支持的參數有:(較fetch增加的)

* @param {string} requestType post類型, 用來簡化寫content-Type, 默認json
* @param {*} data post數據
* @param {object} params query參數
* @param {string} responseType 服務端返回的數據類型, 用來解析數據, 默認json
* @param {boolean} useCache 是否使用緩存,只有get時有效, 默認關閉, 啟用后如果命中緩存, response中有useCache=true. 另: 內存緩存, 刷新就沒。一個簡單的Map cache, 提供session local map三種前端cache方式.
* @param {number} ttl 緩存生命周期, 默認60秒, 單位毫秒
* @param {number} timeout 超時時長, 默認未設, 單位毫秒
* @param {boolean} getResponse 是否獲取response源
* @param {function} errorHandler 錯誤處理
* @param {string} prefix 前綴
* @param {string} suffix 后綴
* @param {string} charset 字符集, 默認utf8

extend里支持的參數有:

* @param {number} maxCache 最大緩存數
* @param {string} prefix url前綴
* @param {function} errorHandler 統一錯誤處理方法
* @param {object} headers 統一的headers

method包括:'get', 'post', 'delete', 'put', 'patch','rpc'。其中,'get', 'post', 'delete', 'put', 'patch'屬于REST風格,是http協議的一種直接應用,默認基于json作為傳輸格式,使用簡單,學習成本低效率高。RPC是指遠程過程調用直觀說法就是A通過網絡調用B的過程方法,是分布式系統中常見的方法。

  • GET操作是安全且等冪的。所謂安全是指不管進行多少次操作,資源的狀態都不會改變。
  • PUT,DELETE操作是冪等的。所謂冪等是指不管進行多少次操作,結果都一樣。比如我用PUT修改一篇文章,然后在做同樣的操作,每次操作后的結果并沒有不同,DELETE也是一樣。
  • POST操作既不是安全的,也不是冪等的,比如常見的POST重復加載問題:當我們多次發出同樣的POST請求后,其結果是創建出了若干的資源。
安全和冪等的意義在于:當操作沒有達到預期的目標時,我們可以不停的重試,而不會對資源產生副作用。從這個意義上說,POST操作需要謹慎。還有一點需要注意的就是,創建操作可以使用POST,也可以使用PUT,區別在于POST 是作用在一個集合資源之上的(/uri),而PUT操作是作用在一個具體資源之上的(/uri/xxx),再通俗點說,如果URL可以在客戶端確定,那么就使用PUT,如果是在服務端確定,那么就使用POST,比如說很多資源使用數據庫自增主鍵作為標識信息,而創建的資源的標識信息到底是什么只能由服務端提供,這個時候就必須使用POST。
  • PATCH新引入的,是對PUT方法的補充,用來對已知資源進行局部更新。在沒有patch之前,我們都是用put進行更新操作,這時候我們的接口中通常會有一個邏輯規則,如:如果對象的的一個字符屬性為NULL,那么就是不更新該屬性(字段)值,如果對象的字符屬性是“”,那么就更新該屬性(字段)的值,通過這種方式來避免全部覆蓋的操作。現在有了patch就解決了這種判斷,在put接口中不管屬性是不是null,都進行更新,在patch接口中就對非null的進行更新
import fetch from './lib/fetch'; import { MapCache } from './utils'; import WrappedFetch from './wrapped-fetch'; import WrappedRpc from './wrapped-rpc';/*** 獲取request實例 調用參數可以覆蓋初始化的參數. 用于一些情況的特殊處理.* @param {*} initOptions 初始化參數*/ const request = (initOptions = {}) => {const mapCache = new MapCache(initOptions);const instance = (input, options = {}) => {options.headers = { ...initOptions.headers, ...options.headers };options.params = { ...initOptions.params, ...options.params };options = { ...initOptions, ...options };const method = options.method || 'get';options.method = method.toLowerCase();if (method === 'rpc') {// call rpcreturn new WrappedRpc(input, options, mapCache);} else {return new WrappedFetch(input, options, mapCache);}};// 增加語法糖如: request.get request.post// 對應著對資源的查看,創建,刪除,創建或更新,部分更新,rpcconst methods = ['get', 'post', 'delete', 'put', 'patch','rpc',];methods.forEach(method => {instance[method] = (input, options) => instance(input, { ...options, method });});// 給request 也增加一個interceptors引用;instance.interceptors = fetch.interceptors;return instance; };/*** extend 方法參考了ky, 讓用戶可以定制配置.* initOpions 初始化參數* @param {number} maxCache 最大緩存數* @param {string} prefix url前綴* @param {function} errorHandler 統一錯誤處理方法* @param {object} headers 統一的headers*/ export const extend = initOptions => request(initOptions); export default request();

使用示例

通過extend進行簡單封裝,參照antd-pro,dva數據流處理方式。

import { extend } from 'umi-request'; ...... const request = extend({errorHandler, // 默認錯誤處理函數credentials: 'include', // 默認請求是否帶上cookie// useCache: false,// maxCache: 50, }); export default request;

后續在api.js中的使用

import request from '@/utils/request'; //get請求 export async function function1({ classId }) {return request(`/api/classes/${classId}/teachers/`);} //post請求 export async function function2({ classId }) {return request.post('/api/classes/${classId}/teachers/', { data: {foo: 'bar'}});} // 使用緩存 export async function function3({ classId }) {return request(`/api/classes/${classId}/teachers/`, { useCache: true, ttl: 10000 });}

每一個頁面對應的model中,可以通過下面的方式進行使用

* fetchBasic({ classId }, { call, put }) {//利用call方式調用api.js中聲明的function1 const response = yield call(fuction1, classId);//對接收到的response進行處理yield put({type: 'saveResponse',//reducers中對應的處理方法payload: response}); },

特點

  • url 參數自動序列化
  • post 數據提交方式簡化
  • response 返回處理簡化
  • api 超時支持
  • api 請求緩存支持
  • 支持處理 gbk
  • 類 axios 的 request 和 response 攔截器(interceptors)支持
更多內容查看umi-request項目、dva文檔、antd-pro項目umi-request項目?github.comDva 概念 | DvaJS?dvajs.comantd-pro項目?github.com

總結

以上是生活随笔為你收集整理的antd request 通过jsessionid传参数_Umi-request源码阅读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲欧美精品在线 | 麻豆视频观看 | 人人cao| 婷婷.com| 日日躁你夜夜躁你av蜜 | 久久99精品热在线观看 | 成人在线免费视频观看 | 精品久久久久久亚洲综合网 | 成年人视频在线免费观看 | 91在线视频 | 在线免费试看 | 天天射综合网视频 | 91在线91拍拍在线91 | 中文字幕精品三级久久久 | 伊人伊成久久人综合网小说 | 天天色天天色 | 久久这里只有精品视频首页 | 伊人黄 | 日韩在线观看网址 | 中文字幕区 | 亚洲伊人第一页 | 国产精品免费看久久久8精臀av | 国产精品久久久久久妇 | 伊人狠狠干 | 亚洲成人二区 | 欧洲一区二区三区精品 | 天天射天天射 | 亚洲精品国产精品国自产在线 | 中文字幕二区三区 | 国产一区二区高清不卡 | 国产精品久久久久久久久久免费 | 夜色资源站国产www在线视频 | 国产精品福利在线播放 | 一区二区 不卡 | 天天综合天天做天天综合 | 一级黄色片在线免费观看 | 91精品啪在线观看国产81旧版 | 91试看| 久久8精品| 久青草视频 | 日韩精品中文字幕在线 | 成年人黄色av | 日韩在线激情 | 久久久久久欧美二区电影网 | av免费看看 | 久久国产午夜精品理论片最新版本 | 亚洲午夜精品一区 | 久久伊99综合婷婷久久伊 | 精品自拍网| 免费视频区 | 国产成人三级 | 91av视频观看| 中文一二区 | 综合黄色网| 国产精品资源网 | 精品视频一区在线 | 韩国av一区二区三区在线观看 | 国产精品一区二区av | 91丨九色丨国产在线观看 | 黄色tv视频| 国产精品一区二区你懂的 | 色综合天天做天天爱 | 97爱爱爱| 国产精久久久久久妇女av | 亚州国产视频 | 黄色精品久久 | 亚洲精品视频久久 | 色婷婷九月 | 久久在线免费观看 | 黄色1级大片 | 91九色porny蝌蚪视频 | 国产一区二区在线精品 | 免费观看特级毛片 | 成人在线视频免费观看 | 免费www视频 | 久久精品中文 | 欧美 日韩 国产 中文字幕 | 91插插视频 | 中文字幕之中文字幕 | www黄色大片| 狠狠躁日日躁夜夜躁av | 亚洲我射av | 又黄又刺激视频 | 久久这里有 | 国产破处视频在线播放 | 国产99久久久国产精品成人免费 | 免费观看完整版无人区 | 啪啪免费试看 | 香蕉视频在线免费 | 亚洲经典视频在线观看 | 欧美性脚交 | 玖玖爱国产在线 | 日韩城人在线 | 欧美成年人在线视频 | 99精品在线免费在线观看 | 91麻豆网站 | 日韩精品久久久久久久电影竹菊 | 五月婷久 | 亚洲免费色 | 国产一区视频在线观看免费 | 国产精品99久久免费观看 | 国产精品国内免费一区二区三区 | 一区二区三区久久 | 欧美怡红院视频 | 亚洲欧洲国产日韩精品 | 国产精品久久精品 | 在线视频欧美亚洲 | 欧美日韩精品在线免费观看 | 在线观看自拍 | 99视频偷窥在线精品国自产拍 | 综合天天| 在线观看网站av | 免费午夜av | 午夜精品久久久99热福利 | 手机成人免费视频 | 丁香婷婷久久久综合精品国产 | 国产理伦在线 | 国产成人一区二区三区在线观看 | 91完整版| 久久久综合香蕉尹人综合网 | 国产精品成人免费一区久久羞羞 | 六月丁香社区 | 亚洲黄色免费在线 | 精品在线观看一区二区三区 | 日韩黄色免费在线观看 | 人人干97 | av官网在线| 国内外成人免费在线视频 | 亚洲精品日韩在线观看 | 亚洲精品www久久久 www国产精品com | 97av影院 | 午夜精品一区二区三区可下载 | 国产成人精品a | 成人黄色av免费在线观看 | 中文字幕在线免费观看视频 | 91成人在线观看高潮 | 天天操天天干天天 | 日韩中文字幕免费 | 最近中文字幕免费大全 | 日韩免费视频网站 | 99re亚洲国产精品 | 成人久久18免费网站图片 | 欧美日韩一区二区三区视频 | 欧美精品久久久久久久久免 | 欧美日韩高清不卡 | 天天操天天干天天操天天干 | 国产精品成人久久 | 三级av免费观看 | 丁香婷婷色综合亚洲电影 | 97精品国产aⅴ | 久久这里只有精品首页 | 亚洲一区精品人人爽人人躁 | 日韩欧美在线观看一区 | 亚洲欧美日韩国产一区二区三区 | 国产视频精品免费播放 | 精品国产免费一区二区三区五区 | 国产免费又黄又爽 | 男女拍拍免费视频 | 五月天六月婷 | 九九视频网 | 国产精品成人一区二区三区吃奶 | 在线视频观看你懂的 | 91精品久久久久久 | 亚洲综合视频在线 | 亚洲最大av在线播放 | 国产91区| 国产高清日韩 | 亚洲午夜精品一区二区三区电影院 | 国产只有精品 | 久久av影院 | 久久中文字幕在线视频 | 最近更新好看的中文字幕 | 最新国产在线 | 国产精品av在线免费观看 | 女人18片 | 国产一区二区三区免费在线 | av片无限看 | 一区二区三区久久精品 | 天天操天天色天天 | 国产精品午夜久久 | 久久爽久久爽久久av东京爽 | 久久久免费精品 | 在线草 | 久久99亚洲精品 | 成人免费在线看片 | 精品视频免费看 | 久久69精品久久久久久久电影好 | 国产精品视频app | 91影视成人 | 中文字幕免费看 | 美女视频黄是免费的 | 国产高清视频免费最新在线 | 日韩黄色免费 | 色视频在线观看 | 欧美最新大片在线看 | 中文字幕在线观看网站 | 国产精品毛片一区二区在线 | 国产字幕在线观看 | 香蕉免费在线 | 悠悠av资源片 | 99999精品| 国产精品 亚洲精品 | 欧美日韩精品区 | 日韩欧美在线一区 | 欧美日韩中文在线观看 | 中文国产在线观看 | 久久久久久久久久久电影 | 久久久久久久国产精品视频 | 91精品在线视频观看 | 五月天综合婷婷 | 欧美性超爽| 国产一级二级视频 | 国产r级在线观看 | 狠狠色伊人亚洲综合网站野外 | 国产视频在线观看免费 | 色偷偷88欧美精品久久久 | 免费亚洲婷婷 | 日韩av中文字幕在线免费观看 | 亚洲视频在线看 | 在线播放 日韩专区 | www,黄视频 | 97干com | 久久成人一区 | 精品国产一区二区三区四 | 国内一级片在线观看 | wwwwww黄 | 日韩理论电影在线观看 | 曰韩精品| 久久久久久久久久网站 | 91桃色免费视频 | 在线观看视频你懂 | 亚洲日b视频 | 欧美日韩后| 欧美a级片网站 | 狠狠色香婷婷久久亚洲精品 | av看片网址 | 九九在线精品视频 | 天天干天天操av | 99热精品在线 | 欧美日韩高清一区二区三区 | 午夜黄色一级片 | 国产视频一区二区在线观看 | 久久99这里只有精品 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 有码中文字幕在线观看 | 日日麻批40分钟视频免费观看 | 欧美日韩一区二区三区免费视频 | 能在线看的av | 精品9999| 日韩视频在线一区 | 久久久五月天 | 日韩免费一级电影 | 国产中文伊人 | 亚洲在线成人精品 | 91久久一区二区 | 日韩精品中文字幕一区二区 | 丰满少妇在线观看 | 久久精品99国产精品酒店日本 | 91久久丝袜国产露脸动漫 | 91亚洲精品久久久蜜桃网站 | 97超碰在线久草超碰在线观看 | 在线观看国产福利片 | 天天操天天射天天添 | 国产精品不卡在线 | 一级黄色在线免费观看 | 久久视频这里有久久精品视频11 | 伊人婷婷 | 人人揉人人揉人人揉人人揉97 | 狠狠色噜噜狠狠狠狠2022 | 国产九九热视频 | 国产亚洲精品久久久久秋 | 国产免费不卡av | 午夜av免费在线观看 | 国产福利专区 | 免费网站在线观看人 | 天天综合成人 | 午夜三级在线 | 欧美日韩午夜 | 国产不卡毛片 | 91视频在线网址 | 欧洲黄色片 | 国产精品二区在线观看 | 国产人成精品一区二区三 | 国产精品嫩草在线 | 久久麻豆视频 | 亚洲国产成人在线 | 婷婷香蕉 | 欧美国产三区 | av不卡免费在线观看 | 成 人 黄 色 视频 免费观看 | 中文av在线免费观看 | 亚洲国产成人在线播放 | 国产韩国日本高清视频 | 奇人奇案qvod | 国产精品免费观看视频 | 91成人在线网站 | 91在线视频精品 | 337p西西人体大胆瓣开下部 | 国产又粗又猛又色又黄视频 | 婷婷久操 | 国产精品都在这里 | 久热超碰 | 国产无遮挡又黄又爽馒头漫画 | 最新成人av | 欧美一级电影免费观看 | 国产精品去看片 | 五月天高清欧美mv | 999久久久免费精品国产 | 亚洲综合成人av | 午夜精品久久久久久中宇69 | 久久久久久久久久亚洲精品 | 久久爱资源网 | 制服丝袜天堂 | 婷婷久久久久 | 成人av影视在线 | 日日日爽爽爽 | 日韩精品一二三 | 国产精品电影一区二区 | 热久久精品在线 | va视频在线观看 | 日韩精品在线观看视频 | 国产91欧美 | 黄色a视频 | 国产亚洲日本 | 国产成人一区二区三区在线观看 | 九九热在线播放 | 国产96av| 91在线91拍拍在线91 | 亚洲专区免费观看 | 国产伦理精品一区二区 | 亚洲欧美视频在线播放 | 亚洲少妇久久 | 午夜免费视频网站 | 伊人天堂av | 天天干天天操天天搞 | 最近中文字幕第一页 | 成人av.com| 国产香蕉视频 | 五月婷婷在线综合 | 日韩久久精品一区二区三区下载 | 国产一区欧美一区 | 亚洲欧美日韩国产一区二区三区 | 在线观看精品视频 | 日韩在线观看视频免费 | 韩日三级在线 | 成人国产精品免费观看 | 亚洲国产精久久久久久久 | 国产精品二区在线观看 | 日日夜夜精品免费视频 | 日韩av在线网站 | 亚洲视频久久久 | 欧美一级电影免费观看 | 免费人成网 | av在线超碰 | 在线观看免费成人av | 亚洲精品在线视频播放 | 黄色av网站在线观看免费 | 国产福利小视频在线 | 四虎影视精品成人 | 久青草视频在线观看 | 91精品免费在线观看 | 中文在线免费看视频 | 亚洲第一区在线播放 | 狠狠精品 | 欧美激情操 | 精品国产精品久久 | 久久免费看a级毛毛片 | 日韩成人av在线 | 日韩午夜精品 | 成人av直播 | 正在播放国产精品 | 在线观看视频免费播放 | 国产69久久久欧美一级 | 最近中文字幕免费大全 | 国产精品毛片久久久久久 | 国产又粗又猛又黄又爽的视频 | 亚洲 欧美 变态 国产 另类 | 91视频黄色 | 欧美国产高清 | 香蕉97视频观看在线观看 | 在线观看韩日电影免费 | 91精品在线麻豆 | 97天天综合网 | 97免费中文视频在线观看 | 欧美日韩国产精品爽爽 | 久久久久久久久久久久久久免费看 | 国产a级片免费观看 | 免费看国产曰批40分钟 | 国产精品手机在线观看 | 国产一区二区久久久久 | 日韩av资源在线观看 | 五月婷网站 | 欧美激情视频一区二区三区免费 | 97av影院| 欧美日韩不卡在线观看 | 91免费版在线观看 | 欧美日韩高清一区二区 国产亚洲免费看 | 麻豆视频在线看 | 五月天中文字幕mv在线 | 2023年中文无字幕文字 | 日韩欧美精品在线视频 | 国产精品99久久久久久武松影视 | 亚洲毛片视频 | 四虎成人免费观看 | 欧美视频一区二 | 综合激情 | 伊人五月天 | 最近免费观看的电影完整版 | 天天综合网久久 | 国产色久| 日韩中文免费视频 | 日日夜夜狠狠干 | 在线亚洲激情 | 日女人免费视频 | 在线91色 | 欧美激精品 | 国产视频不卡一区 | 在线视频你懂得 | 久久成人国产精品免费软件 | 国产精品av久久久久久无 | 97精品国产一二三产区 | 久久久久免费 | 丰满少妇在线观看资源站 | 在线观看精品一区 | 欧美视屏一区二区 | 日韩网站在线免费观看 | 亚洲视频一区二区三区在线观看 | 亚洲欧美日韩国产精品一区午夜 | 中文一二区| 日韩av片在线 | 国产精品久久久久久a | 日韩伦理片一区二区三区 | 探花视频免费观看高清视频 | 视频一区二区三区视频 | 久久久免费播放 | 91最新网址在线观看 | 成人av免费在线观看 | 青青久视频 | 久久久高清免费视频 | 青春草免费在线视频 | 91亚洲精品久久久蜜桃 | 国内三级在线 | 亚洲精品综合欧美二区变态 | 成人免费在线观看电影 | 国产资源在线播放 | 狠狠干天天 | av免费看电影 | 91九色porny在线 | 欧美成人手机版 | 一级黄色片在线观看 | 在线黄色免费av | 亚洲精品高清在线观看 | 一区二区电影在线观看 | 欧洲一区二区在线观看 | 免费人成在线观看 | 狠狠狠色 | 久久免费精品 | 欧美视频网址 | 日韩精品免费在线观看 | 亚洲永久av| 国产成人精品午夜在线播放 | 国产成人一级电影 | 中文字幕在线观看完整版 | 久久久久久久久久福利 | 日韩视频中文 | 伊甸园永久入口www 99热 精品在线 | 能在线观看的日韩av | 免费日韩视 | 欧美一级小视频 | 午夜精品一区二区三区在线观看 | 国产一区二区三区在线免费观看 | 久久av电影 | 亚洲国产精品推荐 | 欧美色图30p| 日韩r级在线 | 免费看黄在线观看 | 狠狠插狠狠干 | 久久综合一本 | 天天夜夜狠狠操 | 黄污网| 操操操操网 | 久久免费视频一区 | 狠狠干婷婷| 免费看三级黄色片 | 在线观看视频福利 | 欧美做受高潮 | 日本三级中文字幕在线观看 | 黄色av电影网 | 亚洲国产成人精品在线观看 | 五月婷婷综合在线 | 国产韩国精品一区二区三区 | 五月丁香 | 亚洲午夜久久久影院 | 亚洲精品永久免费视频 | 亚洲视频久久 | www视频免费在线观看 | 91av在线不卡 | 日韩中文字幕免费在线观看 | av免费试看| 91福利视频久久久久 | 久草电影在线观看 | 麻豆久久久久久久 | 男女全黄一级一级高潮免费看 | av看片在线 | 伊人影院99 | 国产色黄网站 | 国产91全国探花系列在线播放 | 五月天亚洲婷婷 | 国产精品videossex国产高清 | 国产精品二区三区 | 免费观看性生交大片3 | 毛片随便看 | 中文av资源站 | 午夜色性片 | 国产精品毛片一区二区 | av中文国产 | 亚洲一区二区三区四区在线视频 | 天天爱天天干天天爽 | 91一区啪爱嗯打偷拍欧美 | 91免费看黄色 | 亚洲精品视频中文字幕 | 中文字幕 国产 一区 | 三级黄色片子 | 制服丝袜成人在线 | 色偷偷网站视频 | 香蕉视频免费在线播放 | 一区二区三区中文字幕在线 | 免费观看性生交大片3 | 在线播放av网址 | 久久精品久久99 | 天海冀一区二区三区 | 久久久久二区 | 久久久久久久久久久成人 | 免费在线91 | 91网页版免费观看 | 日韩免费视频播放 | 五月婷婷在线观看视频 | 久久任你操 | 日韩欧美v | 日本中文一级片 | 一区二区三区在线视频111 | 激情婷婷综合网 | 久久精品视频3 | 国产a级精品 | 国产在线精品一区二区不卡了 | 国产一二区视频 | 国产精品美女久久久久aⅴ 干干夜夜 | 久久久久久免费毛片精品 | 欧美91精品国产自产 | 日日操天天射 | 久久精品亚洲精品国产欧美 | 美女一二三区 | 国产女人免费看a级丨片 | 成人亚洲免费 | 国产色婷婷精品综合在线手机播放 | 在线观看视频黄 | 中文字幕在线观看第一区 | 日本久久免费视频 | 日韩理论在线视频 | www.色在线| 91专区在线观看 | 久久精品视频网站 | 99视频在线免费 | 91手机视频在线 | 久久伦理 | 欧美视屏一区二区 | 久久这里只有精品1 | 免费观看国产精品视频 | 96国产在线 | 久草精品视频在线观看 | 日韩精品一区二区三区三炮视频 | 狠狠色丁香婷婷综合橹88 | 久久婷婷国产色一区二区三区 | 最近中文字幕第一页 | 黄色三级免费 | 久久久国产精品久久久 | 欧美男同视频网站 | 国产精品一区二区三区久久久 | 草久在线视频 | 色综合天天天天做夜夜夜夜做 | 国产精品嫩草在线 | 中文字幕首页 | 在线三级av | 色噜噜在线观看视频 | 中文字幕日韩伦理 | 精品国产一区二区三区av性色 | 九九视频这里只有精品 | 91人人射| 草免费视频 | 日韩久久久久久久久久久久 | 日本九九视频 | 中文字幕在线高清 | 81国产精品久久久久久久久久 | 深爱激情婷婷网 | 五月开心婷婷网 | 亚洲精品视频网站在线观看 | 91福利社区在线观看 | 黄色资源在线观看 | 极品国产91在线网站 | 国产韩国日本高清视频 | 看黄色91| 日本韩国精品在线 | 香蕉网站在线观看 | 午夜资源站| 国产精品尤物 | 成人一区二区三区在线 | 亚洲日本一区二区在线 | 日韩综合在线观看 | 欧美va天堂在线电影 | 亚洲欧美日韩在线看 | 精品久久99 | 人人澡人人澡人人 | 亚洲人成精品久久久久 | 中文字幕在线观看视频网站 | 在线免费观看羞羞视频 | 香蕉视频网站在线观看 | 精品一区二区影视 | 五月开心婷婷网 | 在线国产日本 | 国产午夜亚洲精品 | 五月花婷婷| 成年人免费看 | 日本黄色a级大片 | 中文av不卡 | 天天躁日日躁狠狠 | 色综合久久久 | 91大神精品视频在线观看 | 激情综合色播五月 | 精品视频在线免费 | 中文字幕在线观看免费高清电影 | 久草在线视频首页 | 国产精品黑丝在线观看 | 欧美成人基地 | 精品久久久久久久久亚洲 | 人人爽人人澡人人添人人人人 | 成年人免费观看国产 | 天天久久综合 | 91在线视频观看 | 天天躁日日躁狠狠躁av中文 | 日韩午夜视频在线观看 | 中文字幕在线一二 | 在线免费日韩 | 久久久久久久久电影 | 808电影 | 97国产在线播放 | 毛片.com| 99久精品| 又爽又黄在线观看 | 亚洲精品玖玖玖av在线看 | 日本在线观看视频一区 | av看片在线观看 | 亚洲精品国偷自产在线91正片 | 九九视频热 | 婷婷六月色| 韩国在线视频一区 | 麻豆视频www| 欧美 亚洲 另类 激情 另类 | 久久免费视频在线观看 | 日韩在线网 | 狠狠躁18三区二区一区ai明星 | 国产流白浆高潮在线观看 | 91传媒在线播放 | 久久久黄视频 | 亚洲欧美日本一区二区三区 | 欧美另类网站 | 国产在线观看地址 | 玖玖爱国产在线 | 欧美日韩亚洲一 | 日韩另类在线 | 日韩性片 | 黄色视屏在线免费观看 | 黄色软件视频大全免费下载 | 日韩av影视 | 毛片.com| 国产伦精品一区二区三区无广告 | 亚洲国产经典视频 | 亚洲成人黄色在线观看 | 美女性爽视频国产免费app | 色www免费视频| 久久精品网站免费观看 | 69久久99精品久久久久婷婷 | 精品一区二区影视 | av中文天堂 | 亚洲成a人片综合在线 | 亚洲成人家庭影院 | 婷婷丁香狠狠爱 | 久久久黄色免费网站 | 国产xxxxx在线观看 | 人成电影网 | 亚洲第一区精品 | 最近乱久中文字幕 | 国产精品美乳一区二区免费 | 国产99视频在线观看 | 欧美精品v国产精品v日韩精品 | 婷婷精品国产欧美精品亚洲人人爽 | 国产四虎在线 | 亚洲免费av观看 | av在线免费网 | 在线观看视频精品 | 少妇性bbb搡bbb爽爽爽欧美 | 亚洲伦理一区二区 | av网站在线免费观看 | 精品国产a | 精品国产伦一区二区三区观看方式 | 亚洲黄色app | 日日干视频 | 81精品国产乱码久久久久久 | 久久免费精品一区二区三区 | 超碰av在线 | 欧洲精品码一区二区三区免费看 | 日韩色一区二区三区 | 亚洲精选在线 | 亚洲美女精品区人人人人 | 免费在线一区二区 | 99在线免费观看视频 | 亚洲码国产日韩欧美高潮在线播放 | 波多野结衣电影一区二区 | 欧美性黑人 | 日韩免费av片 | 91视频首页 | 丰满少妇在线观看网站 | 久草视频手机在线 | 亚洲春色成人 | 超级碰碰碰碰 | 99精品欧美一区二区三区黑人哦 | 国产一区二区在线观看视频 | 特级毛片爽www免费版 | 五月天色综合 | 亚洲三级在线免费观看 | 国产一级视频在线观看 | 欧美热久久 | 亚洲国产美女久久久久 | 日韩专区 在线 | 天天夜操 | 久久久久国产一区二区三区四区 | www久久| 日本久久久久久久久 | 国产麻豆精品久久 | 一级一片免费视频 | 久久有精品 | 就操操久久 | 超碰97.com| 中文字幕一区二区在线观看 | 又黄又刺激又爽的视频 | 成人在线黄色电影 | 午夜精品久久久久久久久久久 | 麻豆观看 | 国产精品视频专区 | 久草视频免费观 | 国产麻豆传媒 | 久草视频在线观 | 亚洲免费永久精品国产 | 国产亚洲精品久久久久动 | 国内外成人在线 | 欧美激情视频免费看 | 成人三级网址 | 少妇激情久久 | 黄色网在线免费观看 | 超碰电影在线观看 | 日韩女同一区二区三区在线观看 | 免费成人在线视频网站 | 中文字幕在线国产 | 综合久久精品 | 中文字幕精品一区久久久久 | 伊色综合久久之综合久久 | 91色国产在线 | 在线免费观看国产视频 | 人人干网 | a黄色大片 | 中文字幕在线观看免费观看 | 天天曰夜夜操 | av在线中文 | 婷婷色中文字幕 | 精品国产伦一区二区三区 | 国产区av在线 | 免费男女羞羞的视频网站中文字幕 | 成人在线免费看视频 | 亚洲精品动漫久久久久 | 天天干天天射天天操 | 亚洲精品在线观 | 国产亚洲精品日韩在线tv黄 | 久久精品视频中文字幕 | 又大又硬又黄又爽视频在线观看 | 一级电影免费在线观看 | 国产高清免费av | 亚洲a色 | 免费日韩一级片 | 福利片免费看 | 国产精品久久久久久久久免费看 | 成人一级在线 | 久久综合给合久久狠狠色 | 欧美一级性视频 | 国产人成看黄久久久久久久久 | 国产精品福利在线播放 | 日韩高清av在线 | 伊香蕉大综综综合久久啪 | 久久情侣偷拍 | 成人久久久精品国产乱码一区二区 | 久久久久久久久久久免费视频 | 中文字幕在线观看2018 | 欧美日韩国产二区 | 国产91在线观看 | 欧美一二三视频 | 韩日电影在线免费看 | 91大神精品视频在线观看 | 国产午夜三级一区二区三桃花影视 | 久久久久久久久久国产精品 | 日韩电影一区二区三区在线观看 | 丁香综合 | 中文字幕丝袜 | 精品国产一区二区三区久久 | 日日夜夜人人精品 | 亚洲国产影院av久久久久 | 视频在线一区二区三区 | 在线看国产一区 | 91久久国产精品 | 国产免费久久 | 精品国产视频在线 | 精品久久久久国产 | 欧美日韩啪啪 | 99夜色| 97爱| 天天综合中文 | 又污又黄网站 | 手机看片国产 | av福利在线导航 | 国产精品久久久久久久午夜 | 亚洲乱亚洲乱妇 | www.久久久| 欧美日韩国产精品爽爽 | 欧美福利网站 | av亚洲产国偷v产偷v自拍小说 | 欧美精品乱码久久久久久 | 国产一区二区三区久久久 | 中文字幕精品一区久久久久 | 91九色视频国产 | 麻豆国产精品永久免费视频 | 99爱这里只有精品 | 在线观看激情av | 日韩一区二区三区免费电影 | 久久视频免费在线 | 欧美a级在线播放 | 国产免码va在线观看免费 | 99亚洲视频 | 伊人狠狠色丁香婷婷综合 | 日韩毛片在线一区二区毛片 | 久久一区二区三区国产精品 | 中文字幕在线乱 | 国产精品久久久一区二区三区网站 | 久久久国产网站 | 亚洲男男gaygay无套同网址 | 久久超碰免费 | 2024国产精品视频 | 国产在线播放一区二区 | 国产手机视频在线播放 | 丝袜美腿在线视频 | 亚洲 欧美 变态 国产 另类 | 国产高清不卡av | 狠狠色噜噜狠狠 | 九九热免费在线观看 | 日韩欧美在线视频一区二区 | 国产97在线播放 | 免费av黄色| 久久激情五月丁香伊人 | 久久99国产精品自在自在app | 色操插| 免费看的黄色的网站 | 久久精品成人 | 久久午夜电影网 | 在线观看www91 | 欧美一级片免费在线观看 | 四虎www | 成人黄色短片 | 亚洲美女精品视频 | 日韩一区二区三区在线观看 | 国产一区二区三区视频在线 | 国产精品三级视频 | 99人成在线观看视频 | 欧美日韩在线精品一区二区 | 国产淫片 | 成人久久久精品国产乱码一区二区 | 天天色官网 | 国产精品综合av一区二区国产馆 | 国产一级不卡毛片 | 91大神精品视频在线观看 | 国产精品中文字幕av | 日韩乱码中文字幕 | 亚洲永久精品国产 | 欧美爽爽爽 | 欧美日韩天堂 | 日韩影视大全 | 久久精品99国产精品 | 免费在线国产 | 中文字幕在线观看完整版电影 | av天天澡天天爽天天av | 精品国产精品国产偷麻豆 | 亚洲国产精品一区二区久久,亚洲午夜 | av福利在线播放 | 国产精品久久久久久久久久ktv | 久久久久久毛片 | 久久99精品国产一区二区三区 | 国产一级电影在线 | 黄网av在线 | 久草国产在线 | 色婷婷欧美 | 综合色婷婷 | 国产91亚洲精品 | 亚洲国产电影在线观看 | 婷婷色五 | 中文在线a天堂 | 久久电影色 | 国产剧情av在线播放 | 亚洲人成影院在线 | 欧美日韩免费视频 | 亚洲作爱视频 | 久久国产一二区 | 欧美一级性生活 | 黄色电影在线免费观看 | 啪嗒啪嗒免费观看完整版 | 国产99区| 永久免费av在线播放 | 国产亚洲亚洲 | 欧美a√大片 | 欧美日韩国产一区二区三区在线观看 | 免费看短| 久久国产精品一二三区 | 亚洲综合激情 | 国产精品久久二区 | 亚洲精品乱码 | 午夜av免费 | 天天se天天cao天天干 | 日韩午夜小视频 | 欧美伦理一区二区三区 | 久久精品79国产精品 | 久久99精品久久只有精品 | 国产在线97| 亚洲日韩精品欧美一区二区 | 国产成人免费在线 | 久久久国产网站 | 青草视频在线免费 | 国产精品视频区 | 国产精品99久久久久久久久久久久 | 日韩久久久久久久久久久久 | 精品中文字幕在线播放 | 最近久乱中文字幕 | 91在线免费公开视频 | 国产五月婷婷 | 国产中文字幕在线 | 国产一区播放 | 久久久不卡影院 | 国产精品中文久久久久久久 | 亚洲一区黄色 | 91丨九色丨国产在线 | 特黄特色特刺激视频免费播放 | 啪啪凸凸 | av资源免费在线观看 | 在线中文字幕播放 | 天天躁天天躁天天躁婷 | 亚洲日本国产精品 | 人人澡av| 久久电影网站中文字幕 | 波多野结衣在线播放一区 | 亚洲国产成人精品久久 | 国产福利91精品一区 | 久久精品电影院 | 国产高清视频免费 | 国产一级a毛片视频爆浆 | 日韩欧美在线视频一区二区 | 久久久久久久国产精品影院 | 亚洲最大色| 亚洲视频综合 | 四月婷婷在线观看 | 精品视频一区在线观看 | 黄色av免费在线 | 欧美日韩一区二区三区视频 | 久久精品久久久久电影 | 在线观看免费黄色 | 九九免费在线看完整版 | 91三级视频 | 综合色站导航 | 久久99精品久久久久婷婷 | 国产精品18久久久久白浆 | 天天综合网天天 | 国产精品久久久久aaaa九色 | 亚洲视频综合在线 | 精品美女视频 | 午夜影院在线观看18 | 久草在在线视频 | 久久久久久久久久影视 | 亚洲综合干 | 久久午夜国产精品 | 99 精品 在线 | 亚洲精品在线观看中文字幕 | 久久精品视频18 | 久草电影在线观看 | 国产无遮挡又黄又爽在线观看 | 久久免费中文视频 | 国产高清久久久久 |