精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇帶你理解Restful風(fēng)格

開發(fā) 架構(gòu)
REST本身是一個比較大的概念,但是在如今前已經(jīng)后端分離、微服務(wù)化等概念逐漸普及,原本的REST概念并非完全的適用。但是REST的核心理念對我們的接口規(guī)范設(shè)計有十分重要的指導(dǎo)性意見。

REST是什么

REST從2000年被Roy Fielding提出距今已有20多年,其對Web技術(shù)產(chǎn)生了深遠(yuǎn)的影響。REST本身并沒有產(chǎn)生新的技術(shù)或者中間件,REST傳遞的是一種設(shè)計思想,其提供了一種約束原則和條件。

REST全稱為Representational State Transfer,中文為表征性狀態(tài)轉(zhuǎn)移,感覺前面其實還少了一個主語“資源”,個人理解應(yīng)該是“資源表征性狀態(tài)轉(zhuǎn)移”。而其核心就是通過創(chuàng)造一種資源的定義與描述原則,形成一種標(biāo)準(zhǔn)化規(guī)范,從而減少技術(shù)人員在開發(fā)與溝通時候的成本。

實現(xiàn)REST風(fēng)格的框架叫Restful架構(gòu)時,而我們主要是使用的HTTP作為這種規(guī)范的載體,本文也是針對HTTP的形式來進(jìn)行討論。但我認(rèn)為,只要滿足REST設(shè)計思想的功能描述方式,都可以算作REST的實現(xiàn),其并不局限于HTTP協(xié)議。

理解REST

Representational State Transfer,其實已經(jīng)將REST的整體概念羅列出來了,加上我們補(bǔ)充的主語“資源”,可以很明確的體現(xiàn)出REST中主要的兩個概念:

  • 資源,資源表征
  • 動作,狀態(tài)轉(zhuǎn)移

簡單理解的話,REST是就是將一個接口動作的描述進(jìn)行拆分,拆分成資源與動作兩個部分。其中,資源就是對描述資源位置,資源表征則是這些資源應(yīng)該如何展示出來(具體是JSON還是XML),而狀態(tài)轉(zhuǎn)移則可以簡單的理解成正對這個資源所進(jìn)行的動作。

REST的正是通過將這兩種核心定義的邏輯進(jìn)行分離、標(biāo)準(zhǔn)化,從而讓對于“接口”、“操作”的定義更加便于理解,和可閱讀(更完成權(quán)威的介紹可以參考:

https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm)。

資源

REST中的核心概念之一是對資源的的描述,而這個資源是一個抽象概念,并不一定是一個靜態(tài)的資源,也可以是完整資源的一部分。實際上,只要是可以被引用的部分,我們都可以稱之為一個資源。

而在web中我們標(biāo)識一個資源使用的是URI(Uniform Resource Identifier)。從定義上來講,URI是唯一標(biāo)識符,即可以說是資源的名稱也可以說是資源的地址。從這個角度上來說如果無法用URI來表示一個內(nèi)容,那么就不能說它是一個資源。

一些正面的例子:

https://blog.csdn.net/losorick/article/details/123311537。

https://xie.infoq.cn/article/3ddce663b21acd89f41582aa3。

一些反面的例子:

/export/create。

資源定義中多個名詞之間用"-"(最好不用用"_",會在特定情況下顯示不完全)來進(jìn)行分割,并用"/"來表示資源增肌的概念。也可以用","或者";"來作為多個資源的分割。當(dāng)然這些都是建議建議,對于具體的實施只要項目中統(tǒng)一就行,比如github中就是使用"..."來作為多個資源的分割,例如“/git/git/compare/master…next”。

資源表征

URI只定位了具體的資源,但對于客戶端來說是這是一個統(tǒng)一的抽象。如果客戶端要使用的話并不能直接使用,需要指明所需要使用的資源形式。當(dāng)前主流的文本交互方式表征是JSON格式,當(dāng)然對于要求響應(yīng)格式嚴(yán)謹(jǐn)?shù)膱F(tuán)隊來說仍然有使用XML格式的,而對于媒體資源來說也有PNG、MP4等形式。

原則上,資源定位符只負(fù)責(zé)資源的標(biāo)識,但是并不關(guān)注具體怎么展示資源,而需要用何種形式展示資源則是由客戶端根據(jù)自己的需要申請的。在HTTP中我們服務(wù)端通常使用“content-type”來對資源的表征來進(jìn)行描述,而客戶端則是用“Accept”請求頭中來指明所需要的格式類型。

同時,資源的表征并不局限在資源的輸出類型上,資源間的關(guān)聯(lián)關(guān)系也是資源表征的一部分。舉例而言,當(dāng)我們查詢一個詳情信息,查詢后的響應(yīng)體本身是一個資源,用于描述這個詳情信息。如果需求要我們描述這個詳情信息后的下一個詳情信息的訪問鏈接,用于提示用戶進(jìn)一步瀏覽。這個信息“下一個鏈接”的信息,如果我們放到響應(yīng)體中似乎并不是很合適,因為這對于一個GET請求來說,這個“下一個鏈接”信息并不是資源本身的一部分。并且隨著系統(tǒng)中推薦算法的運行,這部分信息甚至變成不可緩存的內(nèi)容(因為可能隨時發(fā)生改變)。基于以上討論,或許我們增加一個LINK響應(yīng)頭用來描述“下一個鏈接”的信息,就達(dá)到了目的并保證了響應(yīng)體對于資源本身描述的正確性。

所以,資源表征并非是對數(shù)據(jù)庫的CURD,它體現(xiàn)了資源作為一個超媒體中一部分的這個概念(資源與資源的連接關(guān)系)。同時我們可以使用HTTP中的各個部分來獨立的描述各種概念,而非一股腦的都丟到響應(yīng)體中。

狀態(tài)轉(zhuǎn)移

通過上文中的描述,我們可以將資源理解成了一種靜態(tài)的內(nèi)容。那么該如何理解我們對資源的操作呢?REST是用狀態(tài)轉(zhuǎn)移來表述這件事的。當(dāng)我們新建一個資源時,就將資源從“無”狀態(tài)轉(zhuǎn)移為了存在狀態(tài);當(dāng)我們更新一個資源的時,則是讓其內(nèi)部的狀態(tài)發(fā)生了更改。

REST中的是使用HTTP方法來描述這些操作類型的,這樣的好處是,我們可以為操作類型指定統(tǒng)一的規(guī)范。舉個例子來說,在REST中所有的GET請求都應(yīng)該是可以被緩存的,所有的PUT請求都應(yīng)該是冪等的。我們通過將接口操作約束成明確的HTTP方法或者是其他統(tǒng)一方式,從而減少在接口對接查看時的溝通成本。

常用的HTTP方法主要是:GET、POST、PUT、DELETE。但是更早版本的客戶端可能只有GET和POST。而根據(jù)協(xié)議的升級則支持LOCK、UNLOCK等方法以及自定義方法。但通常企業(yè)內(nèi)會根據(jù)自己的主要受眾設(shè)備進(jìn)行調(diào)整這些設(shè)計。

從Restful出發(fā)的接口規(guī)范

對于一個接口,其中的URI部分應(yīng)該只用于描述操作時針對哪個資源的。而“HTTP方法”應(yīng)該才用于解釋操作的類型的。但是企業(yè)中如果要推行REST接口的規(guī)范的話,仍然有一些問題需要調(diào)整確認(rèn),原因可能是內(nèi)部歷史原因或者當(dāng)前框架與REST并不適配,本小節(jié)舉例其中的兩個例子用于各位參考。

向下兼容

由于在業(yè)務(wù)實際開發(fā)的過程中,可能會出現(xiàn)業(yè)務(wù)的邏輯變更,我們處理這種問題的主要方法就是通過對接口添加版本信息來實現(xiàn)的。

但是由上文可知,URI本身應(yīng)該用于定義資源的名稱和地址。所以對于同一個資源來說,內(nèi)容變了就是變了,資源本身是沒有版本的概念,我們實際上調(diào)整的是資源的不同的表征方式,而這個方式才對應(yīng)的“版本”的概念,而非資源本身。如果是從這個角度出發(fā),對于REST的設(shè)計來說,這個版本的概念就不應(yīng)該出現(xiàn)在URI的資源定位符上,因為資源的名稱都是同一個。那么對于REST我們可以通過在Accept響應(yīng)頭追加版本信息(version)來區(qū)分具體的表征方式。例如:

  • Accept: version=1.0。
  • Accept: version=2.1。
  • Accept: version=3.0。

但是在實際的企業(yè)中,我們通常不會這么做。原因有很多,其中一種是因為在業(yè)務(wù)溝通的時候,通常只聚焦在URI和HTTP方法上。在實際溝通中我們將URI和HTTP方法作為互相溝通的主要方法,并可以通過一行就表示出全部信息,例如:

  • {GET} http://api.example.com/trade/order/1。

所以如果在URI地址上直接添加版本信息,就可以通過以下方式表示:

  • {GET} http://api.example.com/trade/v1/order/1。
  • {GET} http://api.example.com/trade/v2/order/1。
  • {GET} http://api.example.com/trade/v3/order/1。

這樣的好處就是可以通過URI直接描述兼容性信息,而缺點就是破壞了REST原教旨主義的資源定位方法。但REST推出到當(dāng)前已有20多年時間,而實際業(yè)務(wù)中“資源”數(shù)量也已經(jīng)爆炸數(shù)量增長。所以在服務(wù)治理等各種新概念成為必要需求的今天,符合現(xiàn)狀的調(diào)整才是合適的。

定制的操作

在REST中我們需要用HTTP的方法來定義操作的類型,那么就有一個主要問題:已有方法無法描述當(dāng)前操作怎么辦。一些常見的操作(Postman中有的)是PATCH(github有)、COPY、LINK等。除此之外常見的還有BATCH- CREATE等批量操作。

如果根據(jù)REST原教旨主義則應(yīng)該在HTTP方法中進(jìn)行擴(kuò)展,但由于系統(tǒng)兼容性等問題,我們希望保證各種版本的客戶端可以對方法進(jìn)行支持。

首先,不論我們是使用什么方法來表示自定義操作,都需要滿足統(tǒng)一表達(dá),并且可以應(yīng)用在所有的方法中。根據(jù)這種情況,本小結(jié)列舉出幾種方案作為參考:

擴(kuò)展方法

HTTP中的方法可以自己擴(kuò)展,Github新增了PATCH方法,WebDAV中擴(kuò)展了LOCK、UPLOCK等方法,但這些都不是HTTP中的標(biāo)準(zhǔn)方法,如果使用該方法需要考慮客戶端的支持能力。

參數(shù)定義

通過使用預(yù)留參數(shù)定義擴(kuò)展方法,例如使用_method=DELETE來對請求方法來定義,并在服務(wù)端對具體方法進(jìn)行路由。這種方法的好處是可以將參數(shù)代入到URI中,并不影響URI原版本的資源定位的意義。

URI后綴描述

可以通過在URI添加后綴來描述動作,例如在后綴添加/actions:delete來定義,或者在URI最后使用/actions標(biāo)記,并在請求體中第一層來描述擴(kuò)展的動作類型。這樣雖然導(dǎo)致URI定義中加入了額外的資源地址之外的額外信息,但是可以保證整體訪問接口中的信息是完整的。

總體來說,對于確定定制操作的擴(kuò)展方案要在客戶端支持成都、下游網(wǎng)關(guān)改造難度以及接口可讀性中做出平衡。

Restful風(fēng)格的問題

使用Restful風(fēng)格的構(gòu)建項目中主要需要的問題就是關(guān)于path-variable的處理問題。在一些項目治理項目中默認(rèn)是認(rèn)為有path-variable引起的不同path是不同的URL,所以無法直接使用,需要具有開源軟件二次開發(fā)的能力和需求。

舉一個Sentinel的例子,Sentinel是根據(jù)url生成的資源名稱,而因為REST中用path-variable來定義資源,所以就導(dǎo)致了同一類資源的定義符被識別成了不同的資源。

但隨著查看Sentinel中的代碼我們可以發(fā)現(xiàn),Sentinel中默認(rèn)使用CommonFilter來處理請求的url,并且主要是通過UrlCleaner接口中的clean方法來對資源進(jìn)行重命名,所以我們可以通過重寫clean方法實現(xiàn)滿足rest的資源明明問題(事實上官方也提供了

sentinel-spring-webmvc-adapter來支持rest風(fēng)格定義的接口)。

由于REST風(fēng)格是主流的接口規(guī)范風(fēng)格之一,所以使用量較大的中間件一會都會有對應(yīng)的解決方案,但是對于自研的工具需要考慮REST風(fēng)格的兼容性,可以參考一些開源軟件如Swagger的匹配來實現(xiàn)。

最后

本文討論了REST中的相關(guān)概念,并非完全照本宣科的進(jìn)行陳述,如REST的6大指導(dǎo)原則也并沒有介紹。REST本身是一個比較大的概念,但是在如今前已經(jīng)后端分離、微服務(wù)化等概念逐漸普及,原本的REST概念并非完全的適用。但是REST的核心理念對我們的接口規(guī)范設(shè)計有十分重要的指導(dǎo)性意見。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2020-11-27 08:02:41

Promise

2022-12-20 08:22:42

CommitMuation

2021-05-20 06:57:16

RabbitMQ開源消息

2023-04-20 08:00:00

ES搜索引擎MySQL

2021-06-16 08:28:25

unary 方法函數(shù)技術(shù)

2025-01-17 07:00:00

2022-02-24 07:56:42

開發(fā)Viteesbuild

2021-05-12 06:18:19

KubeBuilderOperatork8s

2021-05-18 05:40:27

kubebuilderwebhook進(jìn)階

2021-05-17 05:51:31

KubeBuilderOperator測試

2020-12-29 05:35:43

FlinkSQL排序

2021-05-16 10:52:58

kubebuilderstatus event

2022-02-21 09:44:45

Git開源分布式

2023-05-12 08:19:12

Netty程序框架

2021-08-11 07:02:21

npm包管理器工具

2021-06-30 00:20:12

Hangfire.NET平臺

2022-04-08 08:32:40

mobx狀態(tài)管理庫redux

2021-07-14 08:24:23

TCPIP 通信協(xié)議

2021-07-28 10:02:54

建造者模式代碼

2021-11-08 08:42:44

CentOS Supervisor運維
點贊
收藏

51CTO技術(shù)棧公眾號

日本激情视频在线| 国产精品日韩高清| 三级黄色免费观看| 欧美电影院免费观看| 一区二区三区在线高清| 国产欧美在线一区二区| 国产成人精品一区二区色戒| 亚洲电影影音先锋| 亚洲黄色av网站| 精品999在线| 国模私拍一区二区国模曼安| 国产午夜精品一区二区三区嫩草 | 久久蜜桃av一区二区天堂| 国产精品视频导航| 日本少妇裸体做爰| 久久一区91| 精品亚洲va在线va天堂资源站| av免费一区二区| 亚洲黄色免费av| 一区二区免费视频| 亚洲一区二区三区精品视频| 熟妇人妻av无码一区二区三区| 免费成人美女在线观看.| 久久久久久久一区二区| 99成人在线观看| 亚洲午夜久久| 亚洲成人激情视频| 中文字幕在线观看日| 二区三区不卡| 亚洲成年人网站在线观看| 在线丝袜欧美日韩制服| 水中色av综合| 成人小视频在线| 亚洲一区二区三| 中文字幕制服诱惑| 久久激情一区| 欧美亚洲另类制服自拍| 精品处破女学生| 五月婷婷六月综合| 综合av色偷偷网| 妺妺窝人体色WWW精品| 欧美中文一区| 337p日本欧洲亚洲大胆精品| 国产探花在线观看视频| 日本午夜免费一区二区| 欧美亚洲综合久久| 自拍偷拍 国产| 欧美电影网址| 91久久一区二区| 激情综合网婷婷| 东京一区二区| 在线精品国精品国产尤物884a| 国产l精品国产亚洲区久久| sqte在线播放| 亚洲高清免费在线| 少妇高潮毛片色欲ava片| hd国产人妖ts另类视频| 欧美日韩黄色大片| 午夜精品久久久久久久无码 | 欧美日韩国产中文字幕| 欧美三级一级片| 亚洲少妇视频| 日本国产一区二区| 黄大色黄女片18第一次| 欧美成人高清视频在线观看| 欧美二区乱c少妇| 欧美国产在线一区| 99精品中文字幕在线不卡| 精品成人在线观看| 欧美做受喷浆在线观看| 国产一区二区三区天码| 这里只有精品在线观看| 日本一级特级毛片视频| 欧美在线高清| 久久久久亚洲精品| 亚洲婷婷综合网| 日本vs亚洲vs韩国一区三区 | 欧美第一黄色网| 国产一国产二国产三| 国产精品日韩| 国产精品免费一区豆花| 国产极品999| 99视频一区二区| 日产中文字幕在线精品一区| 午夜毛片在线| 一区二区三区毛片| 久草资源站在线观看| 国产一区二区三区影视| 69堂精品视频| 超碰97在线资源站| 日本一本不卡| 欧美福利视频在线观看| 日本道在线观看| 久久精品国产久精国产爱| 99国精产品一二二线| 三级在线视频| 亚洲柠檬福利资源导航| 天天夜碰日日摸日日澡性色av| xxxxx性欧美特大| 欧美丰满少妇xxxbbb| 久久久久国产精品无码免费看| 国产欧美日韩| 欧美激情va永久在线播放| 无码人妻丰满熟妇精品区| 精品一区二区三区免费播放 | 免费观看成年人视频| 2022国产精品视频| 手机在线视频你懂的| 九色porny丨入口在线| 欧美日本一道本| 免费的av网站| 你懂的视频一区二区| 国产不卡视频在线| 亚洲国产视频一区二区三区| 国产性天天综合网| 国产成人永久免费视频| 免费视频成人| 亚洲欧美激情精品一区二区| 国产女人18水真多毛片18精品| 美女国产精品| 狠狠综合久久av| a毛片在线看免费观看| 欧美图区在线视频| 国产精品一区二区入口九绯色| 午夜视频精品| 国产一区欧美二区三区| 都市激情一区| 一本大道av伊人久久综合| 97人妻精品一区二区三区免费 | …久久精品99久久香蕉国产| 国产伦精品一区二区三区视频痴汉 | 91久久大香伊蕉在人线| 欧美三级黄网| 欧美无人高清视频在线观看| 四虎影成人精品a片| 亚洲二区免费| 国产精品初高中精品久久| a级毛片免费观看在线| 欧美精品丝袜中出| 纪美影视在线观看电视版使用方法| 在线一区欧美| 精品乱子伦一区二区三区| 男女免费观看在线爽爽爽视频| 欧美精品在线视频| 一区二区国产精品精华液| 麻豆精品在线观看| 日产中文字幕在线精品一区 | 欧美中文一区二区三区| 国产毛片久久久久久久| 男女精品网站| 欧美日韩亚洲综合一区二区三区激情在线 | 国产欧美精品区一区二区三区| 91视频最新入口| 先锋影音国产精品| 国产激情久久久| 国产一级在线| 欧美视频在线一区二区三区| www.日本高清视频| 久久黄色级2电影| 26uuu成人| 亚洲一区电影| 国模gogo一区二区大胆私拍| 特黄视频在线观看| 欧美性猛交xxxx乱大交3| 大又大又粗又硬又爽少妇毛片| 国产美女一区| 亚洲国产欧美日韩| 精品国产第一国产综合精品| 久久91精品国产91久久跳| 国产精品视频久久| 亚洲一区精品电影| 亚洲av永久无码国产精品久久| 一区二区三区.www| 亚洲精品成人无码毛片| 亚洲国产网站| 欧美亚洲国产免费| 亚洲精品成人一区| 欧美wwwxxxx| 少妇精品视频一区二区| 日韩在线精品强乱中文字幕| 亚洲男人av| 尤物在线网址| 伊人色综合久久天天人手人婷| 最好看的中文字幕| 亚洲欧洲视频| 日本不卡在线播放| 电影中文字幕一区二区| 高清一区二区三区日本久| 男人天堂网在线观看| 欧美三级中文字| 久久国产精品波多野结衣| 99热99精品| 九九热精品国产| 99国产精品久久久久久久| 日韩欧美一区二区三区久久婷婷| 麻豆精品国产| 欧美中文字幕在线视频| 久久综合之合合综合久久| 欧美精品一区二区三| 中文字幕手机在线视频| 日韩一区二区三区精品| 国产一区二区日韩| 性欧美8khd高清极品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产一区二区无遮挡| 国产情侣一区二区三区| 8x拔播拔播x8国产精品| 嫩草香蕉在线91一二三区| 亚洲激情视频网站| 91在线观看喷潮| 欧美午夜精品久久久久久浪潮| 亚洲综合图片一区| www国产精品av| 在线观看欧美一区二区| 奇米亚洲午夜久久精品| 国产一区二区视频播放| 亚洲女同一区| 亚洲不卡中文字幕| 亚洲视频精选| 91网在线免费观看| 亚洲www啪成人一区二区| 久久人人爽人人爽人人片av高请 | 成人激情视频| 久久久久久久久四区三区| 亚洲一区二区电影| 亚洲a一级视频| 久久久加勒比| 国产精品久久999| 午夜伦理福利在线| 97国产一区二区精品久久呦| 伊人影院在线视频| 插插插亚洲综合网| 免费观看成人高潮| 日韩天堂在线视频| 天天综合视频在线观看| 亚洲性视频网站| 深夜福利视频在线免费观看| 精品88久久久久88久久久| 99国产精品99| 9191精品国产综合久久久久久| 最近日韩免费视频| 在线欧美小视频| 中文字幕免费高清网站| 色婷婷精品大在线视频| 91丝袜一区二区三区| 欧美日韩亚洲一区二区| 久久久久久久久久影院| 婷婷成人激情在线网| 久草国产精品视频| 欧美性极品xxxx娇小| 国产成人一级片| 91久久精品一区二区三| 最近中文在线观看| 7777精品久久久大香线蕉| 99久久久久成人国产免费| 欧美一区二区成人6969| www.com欧美| 精品国产一二三区| 五月婷婷六月丁香| 亚洲美女av在线| 国产福利片在线| 最近2019年中文视频免费在线观看| gogogo高清在线观看免费完整版| 中文字幕亚洲无线码a| 蜜桃视频网站在线| 久久精品人人做人人综合 | 婷婷激情一区| 日韩美女毛茸茸| 怡红院成人在线| 国产精品视频一| 精品国产三区在线| 国产精品国产三级欧美二区| 任你弄精品视频免费观看| 欧美日韩一区综合| 66视频精品| 成人免费视频91| 日韩成人一区二区三区在线观看| wwwwwxxxx日本| 成人午夜视频免费看| 国产草草浮力影院| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 色老头在线观看| 国产97色在线|日韩| 亚洲国产aⅴ精品一区二区三区| www国产亚洲精品| 国产精品入口久久| 米仓穗香在线观看| 国产日韩欧美一区二区三区在线观看| 能在线观看的av网站| 国产九色精品成人porny| 91精品小视频| 亚洲美女视频一区| 天天综合网久久综合网| 9191久久久久久久久久久| 婷婷在线免费观看| 爽爽爽爽爽爽爽成人免费观看| 高清电影在线观看免费| 国产精品普通话| 精品成人自拍视频| 最新中文字幕久久| 久久人人超碰| 不许穿内裤随时挨c调教h苏绵| 中文字幕国产精品一区二区| 国产精品自拍视频一区| 欧美日韩国产片| 日韩电影在线观看完整版| 欧美日韩爱爱视频| 在线一区视频观看| 极品尤物一区二区三区| 你懂的网址国产 欧美| 无需播放器的av| 久久蜜桃一区二区| 日本熟妇成熟毛茸茸| 欧美一区二区在线播放| 国产鲁鲁视频在线观看免费| 高清欧美性猛交xxxx黑人猛交| 国产电影一区二区| 午夜老司机精品| 久久久久久婷| 真人bbbbbbbbb毛片| 亚洲综合成人在线视频| 中文字幕永久在线观看| 亚洲精品视频中文字幕| 91精品久久久久久粉嫩| 国产热re99久久6国产精品| 国产精品美女久久久久久不卡| 国内精品视频一区二区三区| 国产精品1区2区| 日韩视频中文字幕在线观看| 欧美视频一区二| 国产精品天堂| 日韩免费不卡av| 窝窝社区一区二区| 欧美极品欧美精品欧美| 成人动漫一区二区三区| 国产在线视频你懂的| 日韩一区二区三区av| av电影免费在线观看| 91理论片午午论夜理片久久| 99精品一区| 999这里有精品| 亚洲天堂免费在线观看视频| 97视频免费在线| 久久国产精品免费视频| 97久久中文字幕| 成人小视频在线观看免费| 国产精品1区2区3区在线观看| 欧美卡一卡二卡三| 欧美成人一区二区三区在线观看 | 亚洲精品视频一区| 888奇米影视| 萌白酱国产一区二区| 97se亚洲国产一区二区三区| 免费毛片网站在线观看| 久久婷婷国产综合国色天香| 波多野结衣人妻| 色偷偷偷亚洲综合网另类| 综合欧美精品| 成人av在线播放观看| av中文字幕一区| 日韩精品一区不卡| 色哟哟网站入口亚洲精品| 成人激情久久| 男人天堂a在线| 久久先锋影音av| 中文字幕乱码人妻二区三区| 精品国偷自产在线视频| 美国十次综合久久| 成人免费毛片在线观看| 久久久亚洲精品一区二区三区 | 精品国产区一区| 啊啊啊久久久| 亚洲一区二区在线看| 国产成人亚洲精品青草天美 | 日韩精品一二三区| 顶级黑人搡bbw搡bbbb搡| 日韩你懂的在线观看| 国产777精品精品热热热一区二区| 你懂的网址一区二区三区| 久久精品国产一区二区三区免费看| 印度午夜性春猛xxx交| 日韩av网站大全| 黄页免费欧美| 国产成a人亚洲精v品在线观看| 91视频观看视频| 一级特黄aaa大片在线观看| 久久久视频精品| 日产午夜精品一线二线三线| 国产成人精品一区二区三区在线观看 | 日本一区美女| 国产91高潮流白浆在线麻豆| 久久国产视频播放| 久久精品在线播放| 亚洲精品国产setv| 日韩久久久久久久久久久| 色哦色哦哦色天天综合| 影音先锋在线播放| 五月天色一区| 99re视频精品| 国产不卡av在线播放|