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

技術熱點:RESTful API 最佳實踐

開發 后端
在參考了GitHub API設計和大量博客文章后總結了一下RESTful API的設計,分享如下。想要更好的理解RESTful API首先需要理解如下概念:

在參考了GitHub API設計和大量博客文章后總結了一下RESTful API的設計,分享如下。想要更好的理解RESTful API首先需要理解如下概念:

REST:REST(Representational State Transfer)這個詞,是Roy Thomas Fielding在他2000年的博士論文中提出的,翻譯成中文大意為表現層狀態傳輸。由于他是HTTP協議(1.0版和1.1版)的主要設計者、Apache服務器軟件的作者之一、Apache基金會的***任主席,所以REST原則迅速流行起來。當一個軟件架構符合REST原則,我們稱之為RESTful架構。說了這么多,我們為什么要使用RESTful架構?使用RESTful架構有什么好處?因為按照RESTful架構可以充分的利用HTTP協議帶給我們的各種功能,算是對HTTP協議使用的***實踐,還有一點就是可以使軟件架構設計更加清晰,可維護性更好,但是并不是所有情況都需要完全遵守REST原則,畢竟實際情況遠遠比REST原則所定義的更加復雜,下面會詳細介紹。

冪等性:冪等性(Idempotence)本身是一個數學概念,在HTTP/1.1規范中冪等性的定義是:

Methods can also have the property of “idempotence” in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.

翻譯過來大意就是如果方法調用一次和多次產生額外的效果是相同的,它就具有冪等性。

例子:在HTTP中使用GET方法通常用于從服務器獲取資源,無論調用多少次產生的額外效果都是從服務器獲取資源,所以GET具有冪等性;而POST方法通常用于提交數據在服務器上創建一個資源,由于最終創建的結果每次都是不同的,所以POST不具有冪等性;但是PUT方法卻是冪等的,因為每次調用產生的效果都是對資源進行更新。

安全方法:安全方法是指不修改資源的 HTTP 方法。譬如,當使用 GET 或者 HEAD 作為資源 URL,都必須不去改變資源。然而,這并不全準確。意思是:它不改變資源的 表示形式。對于安全方法,它仍然可能改變服務器上的內容或資源,但這必須不導致不同的表現形式。

有關HTTP常用方法冪等性和安全性如下:

RESTful API設計規則:

1. URI

  • 應該將API部署在專用域名之下:https://api.example.com
  • 不用大寫
  • 用中杠-不用下杠_;
  • 參數列表要encode;
  • URI中不應該出現動詞,動詞應該使用HTTP方法表示,但是如果無法表示,也可使用動詞,例如:search沒有對應的HTTP方法,可以在路徑中使用search,更加直觀;
  • URI中的名詞表示資源集合,使用復數形式;
  • 雖然/在URI中表達層級,但是避免為了追求REST導致層級過深,適當使用參數表示。
    GET /comments/tid/tid=1&page=1

2. Request:通過標準HTTP方法對資源CRUD

  • GET:查詢資源
    GET /comments //獲取所有評論 GET /comments/tid/1 //獲取文章tid為1的所有評論
  • POST:創建資源
    POST /comments/tid/1 //為tid為1的文章創建評論
  • PUT:更新資源
    PUT /comments/cid/like/1 //為cid為1的評論點贊
  • DELETE:刪除資源
    DELETE /comments/cid/1 //刪除cid為1的評論

3. Response

  • 采用JSON,不要使用XML
  • 默認情況下JSON外層不需要嵌套大括號,API需要支持JSONP跨域訪問或者客戶端無法訪問HTTP Header才需要加上嵌套大括號
  • 默認情況下不要過濾API輸出中的空格,并且要支持gzip

4. API版本控制

  • 在URI中存放:GET /v1/comments;
  • 客戶端在Accept Header中存放:Accept: application/vnd.github.v3+json,服務器自定義Header返回當前版本信息:X-GitHub-Media-Type: github.v3; format=json(GitHub在用);
  • 以上兩種方法根據情況選擇,Github用的方式是REST中所要求的方式;
  • 測試API和正式API要進行區分,方式通過如上兩種方式實現。

5. 速度限制

為了避免請求泛濫,給API設置速度限制很重要。為此 RFC 6585 引入了HTTP狀態碼429(too many requests)。加入速度設置之后,應該提示用戶,至于如何提示標準上沒有說明,不過流行的方法是使用HTTP的返回頭。
下面是幾個必須的返回頭(依照twitter的命名規則):

  • X-Rate-Limit-Limit :當前時間段允許的并發請求數
  • X-Rate-Limit-Remaining:當前時間段保留的請求數。
  • X-Rate-Limit-Reset:當前時間段剩余秒數

為什么使用當前時間段剩余秒數而不是時間戳?

時間戳保存的信息很多,但是也包含了很多不必要的信息,用戶只需要知道還剩幾秒就可以再發請求了這樣也避免了clock skew問題。

6.緩存

HTTP提供了自帶的緩存框架。你需要做的是在返回的時候加入一些返回頭信息,在接受輸入的時候加入輸入驗證。基本兩種方法:

  • ETag:當生成請求的時候,在HTTP頭里面加入ETag,其中包含請求的校驗和和哈希值,這個值和在輸入變化的時候也應該變化。如果輸入的HTTP請求包含IF-NONE-MATCH頭以及一個ETag值,那么API應該返回304 not modified狀態碼,而不是常規的輸出結果。
  • Last-Modified:和etag一樣,只是多了一個時間戳。返回頭里的Last-Modified:包含了 RFC 1123 時間戳,它和IF-MODIFIED-SINCE一致。HTTP規范里面有三種date格式,服務器應該都能處理。

7.覆蓋HTTP方法

一些HTTP客戶端只支持GET和POST請求。為了能夠加強這些客戶端的訪問能力,API需要能夠覆蓋HTTP方法。盡管這里沒有任何強制的標準,但流行的做法是API會接收一個請求頭X-HTTP-Method-Override,它的值可以是PUT、PATCH或者DELETE三者之一。

注意,用來覆蓋HTTP方法的header只能在POST請求中被接受。GET請求永遠不能修改服務器上的數據。

8.過濾信息

如果記錄數量很多,服務器不可能都將它們返回給用戶。API應該提供參數,過濾返回結果。

下面是一些常見的參數:

?limit=10:指定返回記錄的數量
?offset=10:指定返回記錄的開始位置。
?page=2&per_page=100:指定第幾頁,以及每頁的記錄數。
?sortby=name&order=asc:指定返回結果按照哪個屬性排序,以及排序順序。
?animal_type_id=1:指定篩選條件

就像HTML的出錯頁面向訪問者展示了有用的錯誤消息一樣,API也應該用之前熟悉易讀的格式來提供有用的錯誤消息。錯誤的表現形式應該跟其他資源保持一致,只是用一些自己的字段。

API應該一直返回合理的HTTP狀態碼。API錯誤一般情況下分成兩類:代表客戶端錯誤的400系列狀態碼和代表服務端錯誤的500系列狀態碼。API至少把所有400系列錯誤統一用易讀的JSON格式來展示。如果可能(比如,如果負載均衡和反向代理能夠創建自定義錯誤內容的話),500系列的狀態碼也這么弄。

JSON錯誤內容應該為開發者提供一些東西 – 有用的錯誤消息,唯一的錯誤碼(通過它可以在文檔中找到更多錯誤細節),可能的話提供錯誤細節描述。用JSON格式來輸出錯誤看起來這樣:

{
  "code" : 1234,
  "message" : "Something bad happened : (",
  "description" : "More details about the error here"
}

對于PUT、PATCH和POST的請求進行的校驗錯誤需要嵌套多個字段。***做法是用固定的錯誤碼來表示校驗失敗,然后在額外的errors字段中提供錯誤的細節,像這樣:

{
  "code" : 1024,
  "message" : "Validation Failed",
  "errors" : [
    {
      "code" : 5432,
      "field" : "first_name",
      "message" : "First name cannot have fancy characters"
    },
    {
       "code" : 5622,
       "field" : "password",
       "message" : "Password cannot be blank"
    }
  ]
}

10.HTTP狀態碼

HTTP定義了很多有意義的狀態碼,你可以在你的API中使用。這些狀態碼可以幫助API消費者用來路由它們獲取到的響應內容。整理了一個你肯定會用到的狀態碼列表:

  • 200 OK – 對成功的GET、PUT、PATCH或DELETE操作進行響應。也可以被用在不創建新資源的POST操作上
  • 201 Created – 對創建新資源的POST操作進行響應。應該帶著指向新資源地址的Location header)
  • 204 No Content – 對不會返回響應體的成功請求進行響應(比如DELETE請求)
  • 304 Not Modified – HTTP緩存header生效的時候用
  • 400 Bad Request – 請求異常,比如請求中的body無法解析
  • 401 Unauthorized – 沒有進行認證或者認證非法。當API通過瀏覽器訪問的時候,可以用來彈出一個認證對話框
  • 403 Forbidden – 當認證成功,但是認證過的用戶沒有訪問資源的權限
  • 404 Not Found – 當一個不存在的資源被請求
  • 405 Method Not Allowed – 所請求的HTTP方法不允許當前認證用戶訪問
  • 410 Gone – 表示當前請求的資源不再可用。當調用老版本API的時候很有用
  • 415 Unsupported Media Type – 如果請求中的內容類型是錯誤的
  • 422 Unprocessable Entity – 用來表示校驗錯誤
  • 429 Too Many Requests – 由于請求頻次達到上限而被拒絕訪問

11.認證

RESTful API應該是無狀態。這意味著對請求的認證不應該基于cookie或者session。相反,每個請求應該帶有一些認證憑證。

如果一直使用SSL,認證憑證可以簡單的使用隨機生成的access token,把其做為HTTP Basic Auth中user name字段的值傳給API。這么做的好處是可以通過瀏覽器訪問 – 如果瀏覽器從服務器收到401 Unauthorized狀態碼,它將會彈出一個對話框讓人輸出認證憑證。

當然,這種基于token來進行基本認證的方法只能當用戶從API管理后臺拷貝了一個token到自己的代碼中才行。如果搞不到token,只能使用OAuth 2來把安全token傳遞給第三方。OAuth 2使用Bearer token,并且也是基于SSL來保證傳輸安全。

支持JSONP的API可能需要第三種方法來實現認證,因為JSONP的請求沒法發送HTTP Basic Auth憑證或者Bearer token。這種情況下,可以使用一個額外的查詢參數access_token。注意:使用查詢參數來傳遞token存在一個固有的安全隱患,因為大多數web服務器會在服務器日志中保存查詢參數。

不管怎么樣,以上三種方法是用來在API之間傳輸token的方法。實際傳輸的token可以是一樣的。

12.使用SSL

一定要使用SSL。沒有例外。如今,你的web API可以從任何有互聯網的地方(像圖書館,咖啡館,機場等等)被訪問到。這些地方并不都是安全的。很多地方根本沒有對網絡連接進行加密,如果認證憑證被劫持的話,這樣訪問者很容易被竊聽或者被冒充。

一直使用SSL的另一個優勢是,加密的連接簡化了用戶認證的工作 – 你可以使用簡單的access token,而不需要對每個API請求進行簽名。

需要注意的一件事是以非SSL的形式訪問API的URL。不要把請求跳轉到它們的SSL版本上。直接拋出一個嚴重錯誤!

13.Hypermedia API

RESTful API***做到Hypermedia,即返回結果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應該做什么。
比如,當用戶向http://api.example.com的根目錄發出請求,會得到這樣一個文檔。

{"link": {
  "rel":   "collection https://www.example.com/comments",
  "href":  "https://api.example.com/comments",
  "title": "List of comments",
  "type":  "application/vnd.yourformat+json"
}}

上面代碼表示,文檔中有一個link屬性,用戶讀取這個屬性就知道下一步該調用什么API了。rel表示這個API與當前網址的關系(collection關系,并給出該collection的網址),href表示API的路徑,title表示API的標題,type表示返回類型。
Hypermedia API的設計被稱為HATEOAS。

在進行分頁查詢時可以返回下一頁的URI,如果沒有說明服務器已經取到***一條數據了,客戶端可以減少不必要的請求以及URI的構造,建議在分頁的情況下使用。

這就是我總結出來的RESTful API的***設計實踐,文章如果有紕漏,歡迎指出。

責任編輯:張燕妮 來源: 王東堯
相關推薦

2013-06-13 09:21:31

RESTful APIRESTfulAPI

2016-12-27 08:49:55

API設計策略

2022-05-13 08:17:05

HTTPRESTful架構

2023-11-07 07:08:57

2016-01-13 09:25:47

jQuery最佳實踐

2014-04-18 10:58:44

AndroidAPI實踐

2018-12-04 09:00:00

API安全性令牌

2009-07-07 16:13:39

JDK日志

2017-04-27 10:33:50

云計算

2023-04-14 12:23:15

2023-02-06 18:35:05

架構探測技術

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse?變量

2024-05-13 13:13:13

APISpring程序

2023-12-06 07:13:16

RESTAPI客戶端

2017-02-16 08:36:24

API威脅機器學習

2024-03-08 10:50:44

Spring技術應用程序

2012-08-09 09:10:56

代碼審查代碼

2014-06-09 15:50:08

2024-08-21 08:02:47

點贊
收藏

51CTO技術棧公眾號

eeuss影院一区二区三区| 露出调教综合另类| 亚洲天天做日日做天天谢日日欢| 成人性教育视频在线观看| 亚洲综合网在线| 一区二区三区四区高清视频| 黑人与娇小精品av专区| 日本在线观看一区| www夜片内射视频日韩精品成人| 亚洲午夜黄色| 在线观看日韩视频| 亚洲色图欧美另类| 欧美激情福利| 精品久久久中文| www亚洲国产| 亚洲色图另类小说| 激情五月婷婷综合| 欧美亚洲另类制服自拍| 91视频综合网| 国产精品亚洲人成在99www| 日韩午夜在线播放| 国内外免费激情视频| 欧美1234区| 欧美韩国日本不卡| 国产在线欧美日韩| 国产熟女一区二区三区五月婷| 香蕉久久夜色精品国产| 欧美成人精品xxx| 亚洲区自拍偷拍| 成人爽a毛片| 日韩一级欧美一级| xx欧美撒尿嘘撒尿xx| 伊人久久综合一区二区| 亚洲国产欧美另类丝袜| 一区二区三区视频| 粉嫩av在线播放| 97成人超碰视| 欧美性一区二区| 亚洲福利在线视频| 天堂av在线网站| 91超碰在线| 亚洲精品国产无套在线观| 日韩欧美精品在线不卡| 亚洲av毛片成人精品| 国产成人h网站| 成人精品福利视频| 久久午夜鲁丝片| 久久久久久一区二区| 91极品女神在线| 久久网一区二区| 雨宫琴音一区二区三区| 久久精品成人一区二区三区| 国产美女永久免费无遮挡| 午夜欧洲一区| 国产婷婷色综合av蜜臀av| 男男一级淫片免费播放| 在线精品视频一区| 日韩一区二区免费电影| 波多野结衣网页| 精品午夜视频| 日韩一区二区三区电影在线观看 | 国产精品丝袜久久久久久高清 | 成人高h视频在线| 午夜视频网站在线观看| 日韩不卡在线观看日韩不卡视频| 日本在线精品视频| 国产精品午夜一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 日韩av片在线播放| 亚洲欧洲日本mm| 91国语精品自产拍在线观看性色 | 伊人性伊人情综合网| 九一免费在线观看| 丁香影院在线| 午夜视频一区在线观看| 少妇无码av无码专区在线观看 | 中文字幕一区二区三区精华液| 亚洲精品中文字幕乱码三区不卡| 日韩欧美小视频| 亚洲欧美区自拍先锋| 国产制服91一区二区三区制服| 在线āv视频| 亚洲国产精品自拍| 久久精品国产精品亚洲色婷婷| 亚洲www.| 欧美日韩国产小视频| 1314成人网| 欧美丝袜足交| 亚洲色无码播放| 来吧亚洲综合网| 狠狠入ady亚洲精品经典电影| 午夜精品久久久久久久99热| 免费看毛片网站| 紧缚奴在线一区二区三区| www日韩av| 天堂a√中文在线| 日本一区二区三区久久久久久久久不| 午夜探花在线观看| 97人人在线视频| 在线日韩av片| 久久久久国产免费| 亚洲自拍都市欧美小说| 美女精品久久久| 偷偷操不一样的久久| 久久99久久久欧美国产| 精品国产一区二区三区免费| 一广人看www在线观看免费视频| 一区二区在线观看免费| 北条麻妃在线一区| 亚洲大奶少妇| 色偷偷亚洲男人天堂| 国产福利久久久| 麻豆精品视频在线观看视频| 国产日本一区二区三区| 超碰免费在线观看| 精品国产成人在线| 天天干天天曰天天操| 欧美日韩播放| 国模精品一区二区三区色天香| 91丨九色丨海角社区| 成人网男人的天堂| 国产精品波多野结衣| 老司机成人影院| 精品国产一区二区三区不卡| 日韩精品电影一区二区三区| 亚洲青涩在线| 91免费在线视频| youjizz在线播放| 日韩欧美中文字幕在线播放| 天天摸天天舔天天操| 亚洲精品国产动漫| 国语对白做受69| 国产欧美综合视频| 国产精品久久久久久久久免费桃花| 9久久9毛片又大又硬又粗| 91成人福利社区| 中文字幕亚洲在线| 久久久久久91亚洲精品中文字幕| 成人免费视频一区| 成年在线观看视频| 国产 日韩 欧美| 在线看日韩av| 一二三区免费视频| 91论坛在线播放| 欧美视频免费看欧美视频| 日韩在线观看一区二区三区| 久久精品2019中文字幕| 亚洲一二区视频| 亚洲国产岛国毛片在线| 中文字幕在线导航| japanese国产精品| 国产精品久久久久久久久久99| 日韩黄色影片| 日韩欧美中文第一页| 亚洲激情视频小说| 久久午夜av| 欧美日韩一区二区三区在线观看免 | 国产精一区二区三区| 三区精品视频| 欧美另类激情| 久久亚洲精品国产亚洲老地址| 一区二区 亚洲| 日韩毛片精品高清免费| 午夜剧场高清版免费观看| 日韩av二区| 91精品国产综合久久久久久久久| 黄色免费在线网站| 欧美一级久久久| 国产在线视频二区| 97se亚洲国产综合自在线| av免费在线播放网站| 真实原创一区二区影院| 国产精品亚洲网站| 国产精品久久麻豆| 精品久久久久久久久久久久久久久久久| 久久久久久久久久久网| av在线不卡电影| 国产精品99久久免费黑人人妻| 日韩精品看片| 99re国产| 超碰aⅴ人人做人人爽欧美| 国产一区二区三区在线视频| 国产精品伦一区二区三区| 一区二区三区四区精品在线视频| 日本黄色免费观看| 奇米在线7777在线精品| av动漫免费观看| 国产精东传媒成人av电影| 国产91九色视频| 老司机在线视频二区| 欧美精品一区二区三区高清aⅴ| 成人午夜淫片100集| 国产精品国产三级国产普通话三级| 女王人厕视频2ⅴk| 日一区二区三区| 日本美女爱爱视频| 无码少妇一区二区三区| 91九色精品视频| 少妇在线看www| 日韩中文字幕亚洲| 四虎免费在线观看| 欧美日韩免费一区二区三区视频| 欧美一级高潮片| 欧美韩国日本一区| 艳妇乳肉豪妇荡乳xxx| 日本sm残虐另类| 欧美成人精品免费| 欧美超碰在线| 免费久久久一本精品久久区| 九色精品蝌蚪| 国产精品福利片| 免费在线国产视频| 日韩中文视频免费在线观看| 五月天激情开心网| 欧美一区二区三区视频| 亚洲综合久久网| 亚洲一区二区三区中文字幕| 亚洲一二三精品| 99精品国产热久久91蜜凸| 午夜xxxxx| 奇米影视一区二区三区小说| 欧美久久久久久久久久久久久| 外国成人免费视频| 日韩影片在线播放| 色爱av综合网| 国产精品日韩一区二区| 亚洲最大的免费视频网站| 日本三级韩国三级久久| av成人福利| 亚洲电影在线免费观看| 欧洲另类一二三四区| 亚洲一区二区观看| 成人黄色国产精品网站大全在线免费观看 | 78m国产成人精品视频| 羞羞视频在线免费国产| 日韩亚洲精品视频| 国产精品久久一区二区三区不卡| 亚洲精品美女久久久久| 丰满人妻一区二区三区四区53| 欧美日韩国产另类不卡| 无码人妻久久一区二区三区 | 亚洲欧洲免费视频| 天天干天天爽天天操| 精品欧美一区二区三区精品久久| 国产精品视频在线观看免费| 欧美日韩精品一区二区天天拍小说| 精品久久久久久久久久久久久久久久久久| 五月婷婷综合激情| 久热这里只有精品在线| 亚洲午夜三级在线| 国产无遮挡又黄又爽又色| 一区二区成人在线| 免费一级片在线观看| 亚洲最大成人网4388xx| 久久久久久久黄色| 夜夜揉揉日日人人青青一国产精品| 色老板免费视频| 亚洲三级视频在线观看| 中文字幕在线观看成人| 一区二区三区不卡视频| 国产福利久久久| 精品久久久久久久久久久久久| 国产稀缺真实呦乱在线| 婷婷丁香久久五月婷婷| 麻豆久久久久久久久久| 色综合一区二区三区| 亚洲精品毛片一区二区三区| 在线免费精品视频| 亚洲一区二区影视| 日韩欧美色综合| 天天干,夜夜爽| 亚洲欧美成人在线| 超碰免费97在线观看| 久久夜色精品国产欧美乱| www红色一片_亚洲成a人片在线观看_| 九九九久久久久久| aa级大片免费在线观看| 国产成人一区二区三区| www.久久99| 国产精品综合久久久久久| 蜜臀91精品国产高清在线观看| 日韩一区国产在线观看| 欧美国产三区| 亚洲午夜精品久久久久久人妖| 久久九九免费| 中文字幕资源在线观看| 粉嫩一区二区三区性色av| aa一级黄色片| 成人欧美一区二区三区白人| 久久久无码精品亚洲国产| 婷婷国产在线综合| 91成品人影院| 亚洲精品白浆高清久久久久久| 国产日本在线| 欧美福利在线观看| 最新日韩一区| 成人免费视频网站| 精品日本12videosex| 国产91视频一区| 丝袜亚洲另类欧美综合| 日本一本在线视频| 久久久精品综合| 婷婷色中文字幕| 欧美性xxxxx极品少妇| 丰满人妻一区二区三区免费视频 | 久久久久久久久亚洲精品| 久久精品99久久香蕉国产色戒| www.九色在线| 国产一区在线播放| 婷婷五月色综合香五月| 中文字幕第50页| 日韩精品电影一区亚洲| 波多野结衣三级视频| 国产精品乱码人人做人人爱| 免费在线观看黄网站| 欧美女孩性生活视频| 邻居大乳一区二区三区| 欧美激情一区二区三区在线视频观看 | 欧美图片激情小说| 寂寞少妇一区二区三区| 偷拍夫妻性生活| 亚洲高清免费视频| 国产精品国产一区二区三区四区| 亚洲美女中文字幕| 8x8ⅹ拨牐拨牐拨牐在线观看| 91精品视频播放| 精品国产aⅴ| 黄www在线观看| www.爱久久.com| 久草视频在线资源| 91超碰这里只有精品国产| 国产露出视频在线观看| 91大神福利视频在线| 99久热这里只有精品视频免费观看| 国产免费色视频| 久久97超碰色| 国产视频123区| 欧美色精品天天在线观看视频| 日本aaa在线观看| 91精品国产99| 青草久久视频| 日韩精品一区二区三区久久| www.色综合.com| 国产精彩视频在线| 欧美成人猛片aaaaaaa| a级毛片免费观看在线| 成人av资源在线播放| 久久综合电影| 中日韩av在线播放| 成人欧美一区二区三区视频网页| 在线视频免费观看一区| 综合激情国产一区| 欧美精品高清| 日韩高清三级| 人人狠狠综合久久亚洲| 色婷婷国产精品免| 欧美人与性动xxxx| 国产高清一区二区三区视频 | 精品国内亚洲2022精品成人| 无码粉嫩虎白一线天在线观看| 成人午夜视频在线观看| 久久精品国产av一区二区三区| 日韩美女在线视频| av漫画网站在线观看| 国产日韩精品一区观看| 久久狠狠婷婷| 日本猛少妇色xxxxx免费网站| 欧美日韩国产高清一区| 成人免费视屏| 国产伦精品一区二区三区视频黑人| 亚洲激情一区| 扒开jk护士狂揉免费| 欧美色图12p| 91网在线看| 国产原创精品| 日本不卡免费在线视频| 欧美日韩午夜视频| 精品国产成人在线影院| 三妻四妾完整版在线观看电视剧 | www.超碰com| 亚洲人成精品久久久久| 亚洲高清在线观看视频| 欧美在线国产精品| 日韩一区二区在线| 欧美一级大片免费看| 欧美日韩中文字幕| 秋霞午夜在线观看| 国产高清在线一区二区| 久久免费高清| 四虎精品免费视频| 亚洲级视频在线观看免费1级| 最新欧美电影| 国产精品国产三级国产专区51| 91免费国产在线观看| 国产精品无码专区av免费播放| 久久久久久久久国产| 国产一区二区精品福利地址| 欧美在线a视频| 日韩欧美视频一区二区三区| 成人看片免费|